Utiliser efficacement l'anneau de marque

29

J'ai utilisé la marque pour sélectionner les régions d'un tampon. Par exemple, je sais que la séquence C-<space> C-s foopeut être utilisée pour sélectionner tout le texte entre le point actuel et le point après une recherche foo.

J'ai récemment découvert l'existence de l'anneau de marque, je peux C-<space> C-<space>donc laisser une marque, déplacer le point dans le tampon, puis C-u C-<space>revenir en arrière.

Y a-t-il des suggestions, des guides ou des conseils pour naviguer efficacement à l'aide de l'anneau de marquage?

Patrick Steele
la source
2
Merci d'avoir posé la question. Une pensée qui me vient à l'esprit est de faire une liaison plus rapide pour "ajouter une marque", par exemple (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli

Réponses:

22

Helm a une interface pour la navigation les deux marques anneaux locaux et mondiaux: helm-all-mark-rings.

Voir le mini-guide pour une brève description et une capture d'écran.

Et si vous préférez Ivy / Swiper / Counsel , voir counsel-mark-ring.

Davor Cubranic
la source
Impressionnant. Une chose qui pourrait améliorer cela est une action pour enlever la marque de l'anneau de marque ...
Joe Corneli
12

Lorsque vous définissez set-mark-command-repeat-popà tvia

(setq set-mark-command-repeat-pop t)

vous pouvez continuer à appuyer C-SPCaprès la première invocation de C-u C-SPCpour sauter aux emplacements précédents stockés dans l'anneau de marque.

itsjeyd
la source
10

Je trouve plus facile d'utiliser des registres pour marquer des emplacements: C-x r <space>puis une lettre pour marquer C-x r jet une lettre pour revenir en arrière. Je peux conserver un certain nombre de repères, très utile lors de l'alternance entre plusieurs tampons

Alain
la source
2
Je
m'arrête
@nispio il y a quelque temps, j'ai implémenté l'extension [email protected]: atykhonov / iregister.el.git L'une des idées était: permettre de sauter la décision du registre à utiliser. L'extension ne vous sera peut-être pas utile, mais vous pouvez emprunter l'idée dans laquelle votre script personnalisé pourrait simplement utiliser n'importe quel registre gratuit, puis il permettra de parcourir les registres utilisés et de les restaurer.
Andriy Tykhonov
9

C-x C-xpour exchange-mark-and-pointa une utilisation similaire à C-u C-space. Il vous permet de rebondir entre un point et la dernière marque. C'est un peu bizarre de rebondir avec transient-mark-modecar il active la marque et sélectionne la région.

dgtized
la source
C-x C-xavec le mode de marque transitoire est excellent pour sélectionner la dernière chose que vous avez soit sélectionnée (utile avec le mode iedit), soit tirée.
Rune Kaagaard du
8

Mis à part les autres conseils que vous avez obtenus ici, j'ai pensé que je devrais mentionner que cela C-svous marque, donc il n'est pas nécessaire de le faire explicitement. En outre, de nombreuses commandes qui "se déplacent potentiellement sur une longue distance" ( beginning-of-bufferet end-of-bufferpar exemple) définissent également la marque où vous avez commencé. Avec les autres façons de travailler avec la marque (pop, point d'échange et marque, etc.), c'est une façon assez puissante de travailler avec un tampon, une fois que vous comprenez comment cela fonctionne. Notez également que si vous tirez du texte dans un tampon, pointer et marquer entoure le texte tiré.

Mathias Dahl
la source
5

(Votre question est assez ouverte, donc elle pourrait être fermée comme étant principalement basée sur l'opinion.)

Ce que j'utilise: Icicles multi-commande icicle-goto-marker (lié à C-- C-SPC) pour trébucher autour des marques dans n'importe quel tampon ( mark-ring), et icicle-goto-global-marker( C-- C-x C-SPC) pour trébucher parmi les marques globales ( global-mark-ring).

Les lignes de texte où se trouvent les marqueurs sont utilisées comme candidats à l'achèvement. Vous pouvez taper du texte (par exemple, sous-chaîne, expression rationnelle) pour affiner les candidats aux lignes qui correspondent. Vous pouvez parcourir les lignes correspondantes en visitant celles que vous aimez. Si vous utilisez également la bibliothèque, la crosshairs.elposition d'un marqueur que vous visitez est temporairement mise en évidence avec un réticule, afin que vous puissiez rapidement voir où il se trouve.

Voici une partie de la chaîne doc pour icicle-goto-marker:

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
A dessiné
la source