Parfois, je me trouve souvent en alternance entre deux fonctions que je suis en train d’éditer conjointement. Dans ces situations, il est fastidieux et pénible de continuer C-s <functionname>
à changer d’autre fonction, puis de trouver l’endroit exact que j’étais en train d’ éditer précédemment.
Comment définir des marqueurs puis basculer facilement entre deux emplacements du tampon?
navigation
cycling
mark-ring
registers
Vedaad Shakib
la source
la source
Réponses:
Fenêtres d'Emacs
C-x 2
ouvrira une autre fenêtre (= divise le cadre) en dessous de la fenêtre actuelle, associée au même tampon. Vous pouvez déplacer un point dans l'une des fenêtres sans affecter l'autre.Vous pouvez passer d'une fenêtre à l'autre en utilisant
C-x o
. La bibliothèque Windmove intégrée fournit une fonction facilitant la navigation entre les fenêtres.Si cette méthode vous convient, vous pouvez également consulter les tampons indirects .
la source
Registres:
C-xrSPCcourt
point-to-register
C-xrjcourt
jump-to-register
Tapez n'importe quel caractère pour spécifier un registre lorsque vous y êtes invité. 1
Signets:
C-xrmcourt
bookmark-set
C-xrbcourt
bookmark-jump
Mark ring:
C-SPCC-SPCpousse la position actuelle sur l'anneau de repère (sans le laisser actif).
C-uC-SPCfait apparaître l'anneau de repère en sautant à la position précédente. Vous pouvez utiliser cette fonction à plusieurs reprises pour parcourir l'intégralité de l'anneau.
Notez que certaines commandes (en particulier celles susceptibles de vous déplacer à une distance inconnue ou arbitraire de votre position d'origine) seront automatiquement poussées vers l'anneau de repère afin que vous puissiez les utiliser C-uC-SPCultérieurement. Cela inclut
isearch
, donc après avoir utilisé C-spour aller quelque part, vous pouvez facilement revenir en arrière.Point d'échange et marque:
Et comme le fait remarquer Tu Do, cette C-xC-xcourse
exchange-point-and-mark
est très utile pour sauter entre deux endroits. Il active également la marque / région, mais vous pouvez utiliser C-SPCpour effacer la mise en surbrillance.1 Si vous tirez parti de la fonctionnalité de registre dans elisp, utilisez un symbole non conflictuel pour le nom, plutôt qu'un caractère, afin de ne pas entrer en conflit avec les registres définis de manière interactive (à moins, bien sûr, que vous souhaitiez utiliser. cette).
la source
C-x C-x
, car il peut basculer entre deux positions.C-u C-SPC
fait apparaître l'anneau de repère et exécuter à nouveau pour déplacer le point ailleurs.En plus de la réponse de phils, il y a encore plus d'options:
helm-sémantique-ou-imenu : Répertorie toutes les définitions disponibles dans le fichier en cours. Si le curseur est à l'intérieur d'une définition, lors de l'activation, le surligneur présélectionne cette définition.
sr-speedbar : navigateur de fichiers qui répertorie ses définitions dans chaque fichier. Cela ressemble à l’arborescence dans IDE.
la source
Outre les registres et les marqueurs (voir la réponse de @ phils sur les deux et mon autre, Icicles sur les marqueurs), les signets , en particulier les signets auto-nommés ou temporaires, peuvent être utiles à cet égard. Vous avez besoin de la bibliothèque Bookmark + pour ces types de signets spéciaux.
Un signet nommé automatiquement est un signet que vous n'avez pas besoin de nommer. Il est rapide de créer et de supprimer: appuyez simplement sur une touche. La même clé crée ou supprime un signet en un point. (Par défaut, cela est lié à
C-x p RET
, mais vous pouvez bien sûr utiliser n'importe quelle clé.)Les signets nommés automatiquement sont, comme les signets en général, persistants. Mais vous pouvez éventuellement les supprimer automatiquement.
Vous pouvez également créer des signets temporaires ou rendre temporaires les signets existants. Vous pouvez, par exemple, choisir de rendre les signets automatiquement nommés automatiquement temporaires.
Vous pouvez parcourir rapidement un ensemble de signets donné. Par exemple, pour parcourir les signets nommés automatiquement, utilisez les commandes
bmkp-next-autonamed-bookmark-repeat
etbmkp-previous-autonamed-bookmark-repeat
(en les liant à des clés).Vous pouvez mettre en évidence les lieux marqués de différentes manières, de sorte qu'il est facile de les repérer.
la source
En ce qui concerne les tampons indirects mentionnés dans la réponse acceptée ...
M-x clone-indirect-buffer
créera un tampon indirect pour le tampon actuel. «<2>» sera ajouté au nom du nouveau tampon (ou à un nombre supérieur si vous avez déjà des noms de tampon en double). Le nouveau tampon est ouvert dans une nouvelle fenêtre. Vous pouvez revenir à une fenêtre unique en utilisantC-x 0
ouC-x 1
.Avec
M-x winner-mode
vous pouvez facilement basculer entre les deux endroits.C-c <left>
/M-x winner-undo
etC-c <right>
/M-x winner-redo
bascule entre les configurations de fenêtre. Dans ce cas, les configurations seront des positions dans les deux mémoires tampon visualisant le fichier unique.Remarque: les fonctions
winner-undo
etwinner-redo
fonctionnent sur une liste de configurations. Si la configuration est modifiée, par exemple un point en mouvement, la configuration actuelle devient la tête de la liste etwinner-redo
est invalide. Dans ce caswinner-undo
, la position précédente est rétablie.Dans le cas du PO, cela conduit au processus suivant:
M-x winner-mode
M-x clone-indirect-buffer
(nouveau nom de tampon indirect: File1.txt <2>)C-x 1
C-x b
par défaut sera le tampon d'origine à moins qu'un changement de tampon n'ait eu lieu depuis l'étape 3). Cela crée une nouvelle configuration vers laquelle le gagnant pourra revenir.Un basculement vers l'emplacement de modification précédent (configuration de la fenêtre) dépend de la modification apportée à la configuration de la fenêtre entre les commutateurs.
C-c <left>
/M-x winner-undo
.C-c <left>
/M-x winner-undo
pour le retour etC-c <right>
/M-x winner-redo
pour le retour.Un changement est autre chose qu'un autre
winner-undo
ouwinner-redo
.la source
si vous utilisez
evil-mode
la couche vim, alorsC-o
etC-i
fonctionnera de la même manière.Ils exécutent les commandes
evil-jump-backward
/forward
.C-o
saute à la position la plus ancienne dans la liste des sauts, qui est définie automatiquement (les marques sont définies dans les commandes de mouvement).C-i
va en sens inverse. Nous pouvons également utiliserTAB
après unC-o
au lieu deC-i
. Donc, utiliser les deux fonctions vous amène dans votre tampon actuel.Si vous voulez que cette fonctionnalité soit multi-tampon, consultez
evil-jumpers
: http://melpa.org/#/evil-jumper«
Evil-jumper est un add-on pour evil-mode qui remplace la mise en œuvre de la liste de sauts de manière à imiter plus fidèlement le comportement de Vim. Plus précisément, il franchira les limites des tampons et réactivera les tampons morts si nécessaire. La liste de sauts peut également être conservée dans un fichier et restaurée entre les sessions. »
Note: je l'ai appris sur ce wiki
la source
C-o
etC-i
faire?Si vous utilisez des glaçons, vous pouvez naviguer rapidement entre les marqueurs situés dans le
mark-ring
ou les tamponsglobal-mark-ring
(qui possède un seul marqueur dans chaque tampon).Vous faites cela en utilisant plusieurs commandes
C-- C-SPC
(pour un tamponmark-ring
) ouC-- C-x C-SPC
(pour leglobal-mark-ring
). Après avoir appuyé une fois sur la touche, vous utiliserez les touches cycliques etc. habituelles Icicles pour vous déplacer parmi les marqueurs de la bague.(Les mêmes clés sans préfixe arg définissent respectivement mark (
set-mark-command
) et global mark (pop-global-mark
), exactement comme ils le font dans Emacs vanille.)Le texte de la ligne de chaque marqueur est utilisé comme candidat à l'achèvement. Au fur et à mesure que vous tapez, votre entrée dans le mini-tampon réduit les candidats à ceux qui correspondent (par exemple, correspondance de sous-chaîne ou d'expression régulière). Vous pouvez rapidement parcourir les marqueurs correspondants ou les visiter directement. Vous pouvez même changer l'ordre de tri (
C-,
) pour le cyclisme.la source
Une possibilité minime mais souvent utile - quand vous voulez juste jeter un coup d’œil à l’autre fonction -
qui vous ramène à la position exacte de votre curseur de départ lors du basculement entre C-vet M-v.
la source
evil-mode
implémente des marqueurs de style Vim . Vous pouvez définir des marqueurs avec (m
, c’est-à-direevil-set-marker
) et passer à la marque avec le backtick `(evil-goto-mark
) ou à la ligne de la marque'
(evil-goto-mark-line
).Par conséquent, vous pouvez créer la marque "a" au premier emplacement avec
ma
, créer la marque "b" au deuxième emplacement avecma
, puis'a
sauter à la marque "a" et'b
sauter à la marque "b".la source
utiliser imenu et sous le code
la source
Depuis environ 20 ans, j'utilise ces deux joyaux:
Je les lie à C-. et C-, respectivement, et les utilise constamment sans s’en rendre compte.
Oui, les registres, les marqueurs, etc., sont beaucoup plus souples et puissants, mais c’est quand même l’une de ces petites aides rapides qui rendent impossible le passage à un autre éditeur.
la source
Vous pouvez également tirer parti des macros, car elles peuvent être rapidement liées à des touches pratiques.
Par exemple, enregistrez un saut en position N avec
<F3> M-g g N <F4>
et affectez-le à la touche F5 avecC-x C-k b <F5>
. Faites de même avec les positions M et F6. A partir de maintenant, vous pouvez simplement alterner F5 et F6 pour passer de N à M.Encore plus simple, puisque
<F4>
exécute la dernière macro enregistrée et<C-u> F4
l'avant-dernière, vous pouvez ignorer l'étape de reliure à clé et simplement alterner les positions à l'aide de<F4>
et<C-u> F4
.Une autre possibilité plutôt radicale est de créer un tampon indirect dans une autre fenêtre avec
<C-x> 4 c
. Ce tampon a le même contenu mais peut avoir une position de point différente. Maintenant, alternez simplement entre les fenêtres de<C-x> o
la manière habituelle.la source