Effektiv mit dem Markierungsring


29

Ich habe die Markierung verwendet, um Bereiche eines Puffers auszuwählen. Ich weiß zum Beispiel, dass die Sequenz C-<space> C-s fooverwendet werden kann, um den gesamten Text zwischen dem aktuellen Punkt und dem Punkt nach einer Suche nach auszuwählen foo.

Ich habe kürzlich die Existenz des Markierungsrings entdeckt, damit ich C-<space> C-<space>eine Markierung hinterlassen, den Punkt im Puffer verschieben und dann C-u C-<space>zurückspringen kann.

Gibt es Vorschläge, Anleitungen oder Tipps zur effektiven Navigation mit dem Markierungsring?


2
Vielen Dank für die Frage. Ein Gedanke, der mir einfällt, ist, eine schnellere Bindung für "Hinzufügen einer Marke" herzustellen, z (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli

Antworten:


22

Helm hat eine Schnittstelle sowohl lokale als auch globale Marke-Ringe für Surfen im Internet : helm-all-mark-rings.

Sehen Sie sich die Mini-Guide für eine kurze Beschreibung und einen Screenshot.

Und wenn Sie Ivy / Swiper / Counsel bevorzugen , sehen Sie counsel-mark-ring.


Genial. Eine Sache, die dies verbessern könnte, ist eine Aktion zum Entfernen der Marke aus dem Markenring ...
Joe Corneli

12

Wenn Sie set-mark-command-repeat-popauf tVia einstellen

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

Sie können C-SPCnach dem ersten Aufruf von gedrückt halten, um zu den C-u C-SPCim Markierungsring gespeicherten vorherigen Positionen zu springen.


10

Ich finde es einfacher, Register zum Markieren von Orten zu verwenden: C-x r <space>und dann einen Buchstaben zum Markieren C-x r jund einen Buchstaben zum Zurückspringen. Ich kann eine Reihe von Markierungen beibehalten, was sehr nützlich ist, wenn zwischen mehreren Puffern gewechselt wird


2
Ich
mache

@nispio Vor einiger Zeit habe ich die Erweiterung git@github.com: atykhonov / iregister.el.git implementiert. Möglicherweise ist die Erweiterung für Sie nicht hilfreich, aber Sie können die Idee ausleihen, in der Ihr benutzerdefiniertes Skript nur ein beliebiges freies Register verwenden könnte, und dann die verwendeten Register durchsuchen und wiederherstellen.
Andriy Tykhonov

9

C-x C-xfür exchange-mark-and-pointhat ähnliche Verwendung zu C-u C-space. Sie können zwischen einem Punkt und der letzten Markierung springen. Es ist ein bisschen seltsam, mit zu hüpfen, transient-mark-modeda es die Markierung aktiviert und die Region auswählt.


C-x C-xmit transient-mark-modus eignet sich hervorragend für die auswahl des zuletzt gewählten (nützlich im iedit-modus) oder zerrten dings.
Rune Kaagaard

8

Abgesehen von den anderen Tipps, die Sie hier erhalten haben, sollte ich erwähnen, dass dies C-sdas Zeichen für Sie setzt, so dass es nicht erforderlich ist, dies explizit zu tun. Außerdem setzen viele Befehle, die ( beginning-of-bufferund end-of-bufferzum Beispiel) "einen potenziell langen Weg zurücklegen", die Marke, an der Sie begonnen haben. Zusammen mit den anderen Möglichkeiten, mit der Marke zu arbeiten (Pop, Austauschpunkt und Marke usw.), ist es eine sehr leistungsfähige Möglichkeit, mit einem Puffer zu arbeiten, wenn Sie erst einmal verstanden haben, wie er funktioniert. Beachten Sie auch, dass, wenn Sie Text in einen Puffer ziehen, Punkt und Markierung den gezogenen Text umgeben.


5

(Ihre Frage ist ziemlich offen, daher wird sie möglicherweise als hauptsächlich meinungsbasiert geschlossen.)

Was ich benutze: Icicles -Multibefehl icicle-goto-marker (gebunden an C-- C-SPC), um die Markierungen in einem beliebigen Puffer zu umgehen ( mark-ring) und icicle-goto-global-marker( C-- C-x C-SPC), um zwischen den globalen Markierungen zu wechseln ( global-mark-ring).

Die Textzeilen, in denen sich die Markierungen befinden, werden als Abschlusskandidaten verwendet. Sie können Text eingeben (z. B. Teilzeichenfolge, regulärer Ausdruck), um die Kandidaten auf die übereinstimmenden Zeilen einzugrenzen. Sie können zwischen den übereinstimmenden Zeilen wechseln und alle gewünschten besuchen. Wenn Sie auch die Bibliothek verwenden, crosshairs.elwird die Position eines Markers, den Sie besuchen, vorübergehend mit einem Fadenkreuz markiert, sodass Sie schnell sehen können, wo er sich befindet.

Hier ist ein Teil des Dokuments für 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.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.