O `.
comando levará você à sua última alteração.
O `
vai para uma marca, e .
é uma marca "especial" que é automaticamente colocado na posição em que a última alteração foi feita. Veja :help `.
para mais algumas informações.
Há também o ``
que o levará de volta para onde estava o cursor antes de você dar o seu último salto. Veja : ajuda``
para mais informações.
Outra marca útil é `^
; esta é a posição em que o cursor foi a última vez em que o modo de inserção foi parado. Veja :help `^
.
Consulte :help mark-motions
algumas informações mais gerais sobre o uso de marcas (incluindo outras marcas "especiais" que são definidas automaticamente).
g;
eg,
para alternar entre as posições na lista de alterações. Veja:h g;
e:h g,
'
(apóstrofo) em vez de`
(backtick).Aqui está outra abordagem que se ajusta ao seu cenário e saltará para onde você estava imediatamente antes da
gg
(não da última linha alterada).Usar CtrlO
Quando você pressiona
gg
, sua antiga posição do cursor é empurrada para a lista de pulos . De:help jumplist
:Isso requer que você esteja usando o Vim (não o vi) com o
+jumplist
recurso. Se:echo has('jumplist')
imprimir1
, você pode usá-lo.fonte
Para adicionar à resposta de dnetserr e ao comentário de Peter Rincker, o Vim mantém uma lista de alterações e possui alguns comandos associados a isso.
listará as alterações, mostrando onde elas estavam e o que estavam. Por exemplo:
A linha com os
>
shows onde você está na pilha de alterações, como a lista de pulos (:jumps
) ou a pilha de tags (:tags
). Também como a lista de pulos e a pilha de tags, você pode percorrer esta lista.No modo normal, os movimentos são
g;
para ir para um local de alteração anterior eg,
para o próximo. Você também pode digitar o número da alteração antesg;
oug,
para ir para essa alteração na lista. Acima,2g;
me levaria para onde ocorreu a mudança envolvendo stdio.h.Quando no meio da pilha, os números das
:changes
atualizações mostram as distâncias relativas. Por exemplo:Isso mostra que eu posso voltar um (
1g;
ou apenasg;
) ou encaminhar um (1g,
ou apenasg,
).Isso é ótimo se a alteração que você deseja obter realmente ocorreu algumas modificações atrás
A desvantagem disso é que ele não parece agir como um movimento normal. Por exemplo, você não pode
dg;
excluir o cursor do local de alteração anterior,d'.
ed'^
funciona como movimentos.fonte
g;
irá para a linha editada anteriormente.fonte
Como o comando desfazer no Vi funcionará como uma refazer quando o último comando foi desfeito, usei
uu
como meio para voltar ao local da última edição.Se você estiver executando o Vim com
nocompatible
set (como a maioria das pessoas), você deseja usaru
seguido deCTRL+R
para desfazer e refazer. Caso contráriouu
, funcionará como no Vi.fonte
:set nocompatible
não for usado.vim
(comnocompatible
) faz dois desfazer comuu
, mas eu usou
eCTRL+r
para o mesmo efeito.