In verità, come posso tornare a dove ero prima di una ricerca?


258

Programmando in vim vado spesso a cercare qualcosa, lo tiro, poi torno a dove mi trovavo, lo inserisco, lo modifico.

Il problema è che dopo aver cercato e trovato, devo trovare manualmente la strada per tornare a dove mi trovavo.

C'è un modo automatico per tornare a dove ero quando ho iniziato la mia ultima ricerca?


Risposte:


393

Ctrl+ Omi porta alla posizione precedente. Non conoscere la posizione prima della ricerca.

Modifica: inoltre, `.ti porterà all'ultima modifica apportata.


Sembra anche che premendo CTRL + O abbastanza volte inizierai anche a tornare indietro attraverso i file precedentemente aperti.
Mark Biek,

1
Ctrl + O è anche il mio metodo preferito. Lo uso costantemente e vorrei che altri editor ne replicassero il comportamento.
Amrox,

45
Sì, CTRL-O e CTRL-Mi sembra di portarti avanti e indietro dove sei stato, bello.
Edward Tanguay,

8
Ctrl + T ti riporterà indietro solo se ci sei arrivato usando un tag. Se lo hai cercato senza utilizzare i tag Ctrl + T ti riporterà nel luogo in cui ti trovavi prima di aver cercato il tuo ultimo tag
Nathan Fellman

1
Ho scoperto che se salto via :70e poi :100, premendo ctrl+ouna volta torna alla posizione originale, non alla riga 70. :(
WhyNotHugo

91

Usa ``per tornare indietro nella posizione esatta in cui ti trovavi prima di cercare / saltare, o ''per tornare all'inizio della linea in cui ti trovavi prima di cercare / saltare.


4
Vede di funzionare solo se sei alla prima partita, n-ing alle partite successive significa che non torni indietro da dove hai iniziato.
Kris,

Cosa succede se hai cercato e apportato una modifica?
Costa

1
Puoi anche usare g;e g,, passa alla posizione della modifica precedente / successiva.
goetzc,

39

L'ho sempre fatto impostando un segno.

  1. In modalità comando, premere m[lettera] . Ad esempio, maimposta un segno sulla riga corrente usando a come identificativo del segno.

  2. Per tornare al segno premere '[lettera] . Ad esempio, 'ariporta al segno di linea impostato nel passaggio 1. Per tornare alla posizione della colonna della riga in cui è stata contrassegnata la linea, utilizzare `a( segno di spunta [lettera] ).

Per vedere tutti i segni attualmente impostati, digitare :marks.


Su una nota leggermente non correlata, ho appena scoperto un'altra cosa elegante sui marchi.

Diciamo che salti per contrassegnare b facendo mb. Vim imposta automaticamente il segno '(che è una virgoletta singola) in modo che sia la linea su cui eri prima di saltare al segno b .

Ciò significa che puoi fare 'bper saltare a quel segno, quindi fare ''(2 virgolette singole) per tornare a dove eri prima.

L'ho scoperto accidentalmente usando il :markscomando, che mostra un elenco di tutti i segni.


6
fortunatamente un marchio spesso non è necessario poiché vim tiene traccia di alcune posizioni e ti dà accesso con ``, ^ O, ecc.
aehlke

il segno sembra portarmi solo all'inizio della riga su cui è stato impostato. ):
Fzs2,

1
@HermannIngjaldsson Potresti averlo già capito, ma mentre usi 'ti porterà alla linea segnata', ti porterà nella posizione esatta.
Azmr,

38

Dovresti davvero leggerlo :help jumplist, spiega tutto molto bene.


Mi piace questa risposta al meglio, ci sono MOLTE informazioni in: aiuto che molte persone non conoscono (e non l'ho fatto fino a poco tempo fa)
Christian Stewart

1
Che bella lettura! Questo è super utile. <Co> e <Ci> per scorrere i luoghi in cui sei stato di recente. Funziona su tutti i buffer per impostazione predefinita
Costa


7

Il modo più semplice è quello di impostare un segno con m[letter], quindi tornare indietro con'[letter]


È un piacere vederti quando cerco consigli su Vim. Ho usato ctrl-o di più insieme a ctrl-i perché fa un passo avanti e indietro più facile e più automatico.
MattK,

7

Io uso questo:

nnoremap / ms/
nnoremap ? ms?

Quindi se cerco qualcosa usando /o ?, posso tornare indietro rapidamente `s. È possibile sostituire la lettera scon qualsiasi lettera che ti piace.


L'unica avvertenza qui è che interrompe la ricerca in una finestra come NerdTree in cui msi definisce che è qualcosa di diverso da mark, nel caso di NerdTree è il menu.
Kris
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.