No vim, como eu volto para onde estava antes de uma pesquisa?

258

Programando no vim Costumo procurar algo, puxá-lo e depois voltar para onde estava, inseri-lo e modificá-lo.

O problema é que, depois de pesquisar e encontrar, preciso encontrar manualmente o meu caminho de volta para onde estava.

Existe uma maneira automática de voltar para onde eu estava quando iniciei minha última pesquisa?

Edward Tanguay
fonte
possível duplicata de Mover o cursor para a sua última posição
Simone Carletti

Respostas:

393

Ctrl+ Ome leva para o local anterior. Não sabe a localização antes da pesquisa.

Editar: Além disso, `.levará você para a última alteração que você fez.

Agnel Kurian
fonte
Parece também que pressionar CTRL + O vezes suficientes também começará a levá-lo de volta aos arquivos abertos anteriormente.
Mark Biek
1
Ctrl + O é o meu método preferido também. Eu o uso constantemente e desejo que outros editores replicem seu comportamento.
amrox 10/09/08
45
Sim, CTRL-O e CTRL-I parecem levá-lo de um lado para o outro onde você esteve, legal.
Edward Tanguay
8
Ctrl + T só o levará de volta se você chegar lá usando uma tag. Se você procurou-lo sem usar as tags Ctrl + T irá levá-lo de volta para o lugar que você estava antes de você procurou a sua última tag
Nathan Fellman
1
Descobri que se eu pular a vía :70e :100, em seguida , pressionar ctrl+ouma vez voltará ao local original, não à linha 70. :(
WhyNotHugo
91

Use ``para voltar à posição exata em que estava antes de pesquisar / pular, ou ''para voltar ao início da linha em que estava antes de pesquisar / pular.

Max Cantor
fonte
4
Só funciona quando você está na primeira partida; nem partidas subsequentes, você não volta para onde começou.
Kris
E se você pesquisou e fez uma alteração?
Costa
1
Você também pode usar g;e g,, ele vai para a posição da alteração anterior / próxima.
Goetzc #
39

Eu sempre fiz isso estabelecendo uma marca.

  1. No modo de comando, pressione m[letra] . Por exemplo, madefine uma marca na linha atual usando a como identificador de marca.

  2. Para voltar à marca, pressione '[letra] . Por exemplo, 'avocê volta para a marca de linha definida na etapa 1. Para retornar à posição da coluna da linha em que você marcou a linha, use `a( marcar novamente [letra] ).

Para ver todas as marcas definidas atualmente, digite :marks.


Em uma nota um pouco não relacionada, acabei de descobrir outra coisa bacana sobre marcas.

Digamos que você pule para marcar b fazendo mb. O Vim define automaticamente a marca '(aspas simples) para qualquer linha que você estivesse antes de pular para a marca b .

Isso significa que você pode fazer o 'bsalto para essa marca e, em seguida, fazer ''(2 aspas simples) para retornar ao local onde estava antes.

Descobri isso acidentalmente usando o :markscomando, que mostra uma lista de todas as marcas.

Mark Biek
fonte
6
felizmente uma marca é muitas vezes desnecessária, já que vim mantém registro especial de algumas posições e dá-lhe acesso a eles com ``, ^ O, etc.
aehlke
a marca parece me levar apenas ao início da linha em que foi colocada. ):
Fzs2
1
@HermannIngjaldsson Você já deve ter percebido isso agora, mas enquanto estiver usando 'o levará à linha marcada, `o levará ao local exato.
11286 azmr
38

Você realmente deve ler :help jumplist, explica tudo isso muito bem.

André
fonte
Eu gosto desta resposta da melhor maneira, há muitas informações em: ajuda que a maioria das pessoas não conhece (e eu não sabia até recentemente) #
Christian Stewart
1
Que ótima leitura! Isso é super útil. <Co> e <Ci> para percorrer os lugares que você esteve recentemente. Funciona através de buffers por padrão:)
Costa
29

CTRL+Oe CTRL+I, para pular para frente e para trás.

venda
fonte
7

A maneira mais simples é definir uma marca com m[letter]e depois voltar com'[letter]

Paul Tomblin
fonte
É um prazer vê-lo quando procuro dicas sobre o vim. Eu tenho usado o ctrl-o mais junto com o ctrl-i porque ele vai e volta mais fácil e automaticamente.
MattK
7

Eu uso este:

nnoremap / ms/
nnoremap ? ms?

Então, se eu procurar algo usando /ou ?, posso voltar rapidamente `s. Você pode substituir a letra spor qualquer que desejar.

Ethan Zhang
fonte
Apenas uma ressalva aqui é que ele interrompe a pesquisa em uma janela como o NerdTree, onde mé definido como algo diferente de mark, no caso do NerdTree, é o menu.
Kris