Usando efficacemente l'anello di marcatura


29

Ho usato il segno per selezionare le aree di un buffer. Ad esempio, so che la sequenza C-<space> C-s foopuò essere utilizzata per selezionare tutto il testo tra il punto corrente e il punto dopo una ricerca di foo.

Di recente ho scoperto l'esistenza dell'anello del segno, quindi posso C-<space> C-<space>lasciare un segno, spostare il punto nel buffer e quindi C-u C-<space>tornare indietro.

Ci sono suggerimenti, guide o suggerimenti per navigare in modo efficace utilizzando l'anello dei segni?


2
Grazie per aver posto la domanda. Un pensiero che mi viene in mente è quello di creare un'associazione più veloce per "aggiungere un segno", ad es (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Joe Corneli,

Risposte:


22

Helm ha un'interfaccia per la navigazione sia mark-ring locali e globali: helm-all-mark-rings.

Consulta la mini guida per una breve descrizione e uno screenshot.

E se preferisci Ivy / Swiper / Counsel , vedi counsel-mark-ring.


Eccezionale. Una cosa che potrebbe migliorare questo è un'azione per rimuovere il segno dall'anello del segno ...
Joe Corneli,

12

Quando si imposta set-mark-command-repeat-popsu tvia

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

puoi continuare a premere C-SPCdopo la prima invocazione di C-u C-SPCper saltare alle posizioni precedenti memorizzate nell'anello dei segni.


10

Trovo più facile usare i registri per contrassegnare le posizioni: C-x r <space>e poi una lettera per segnare C-x r je una lettera per tornare indietro. Posso mantenere un numero di voti, molto utile quando si alternano più buffer


2
Mi trovo sempre in pausa per decidere la lettera migliore per assegnare il mio registro a ...
nispio,

@nispio qualche tempo fa ho implementato l'estensione git@github.com: atykhonov / iregister.el.git Una delle idee era: consentire di saltare la decisione su quale registro usare. Può essere l'estensione non sarà utile per te, ma puoi prendere in prestito l'idea in cui il tuo script personalizzato potrebbe semplicemente utilizzare qualsiasi registro gratuito e quindi consentirà di sfogliare i registri utilizzati e ripristinare.
Andriy Tykhonov,

9

C-x C-xper exchange-mark-and-pointha un uso simile a C-u C-space. Ti consente di rimbalzare tra un punto e l'ultimo segno. È un po 'strano rimbalzare transient-mark-modeperché attiva il segno e seleziona la regione.


C-x C-xcon transient-mark-mode è eccellente per selezionare l'ultima cosa che hai selezionato (utile con la modalità iedit) o ​​strappata.
Rune Kaagaard,

8

A parte gli altri suggerimenti che hai trovato qui, ho pensato che dovrei menzionare che C-sti dà il segno, quindi non è necessario farlo esplicitamente. Inoltre, molti comandi che "si muovono in modo potenzialmente lungo" ( beginning-of-buffere end-of-bufferad esempio) impostano anche il segno da dove hai iniziato. Insieme agli altri modi di lavorare con il segno (pop, punto di scambio e segno, ecc.) È un modo abbastanza potente di lavorare con un buffer, una volta capito come funziona. Si noti inoltre che se si trascina il testo in un buffer, il punto e il segno circondano il testo strappato.


5

(La tua domanda è piuttosto aperta, quindi potrebbe essere chiusa principalmente perché basata sull'opinione).

Cosa uso: Icicles multi-command icicle-goto-marker (associato a C-- C-SPC) per inciampare nei segni in qualsiasi buffer ( mark-ring) e icicle-goto-global-marker( C-- C-x C-SPC) per inciampare tra i segni globali ( global-mark-ring).

Le righe di testo in cui si trovano gli indicatori vengono utilizzate come candidati per il completamento. È possibile digitare del testo (ad es. Sottostringa, regexp) per restringere i candidati alle righe corrispondenti. Puoi scorrere tra le righe corrispondenti, visitando quelle che preferisci. Se usi anche la libreria, la crosshairs.elposizione di un marker che visiti viene temporaneamente evidenziata con un mirino, in modo da poter vedere rapidamente dove si trova.

Ecco parte della stringa di documenti per 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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.