Muitas vezes, edito um arquivo - acho que meu trabalho está concluído - depois fecho o arquivo e passo para a próxima. Mas então percebo que preciso voltar para esse código e ajustá-lo um pouco mais.
Se eu abrir o arquivo novamente, posso usar a .
marca e pular para a posição da última edição com '.
.
Agora estou tentando encontrar uma maneira de usar as marcas do vim para ir para os locais nos arquivos que visitei recentemente, mas que não foram alterados.
Eu sei que posso definir uma marca manualmente, mas na maioria das vezes, não espero voltar e, portanto, não a defino e preciso usar uma marca que o vim gere automaticamente.
A "
marca parece que isso poderia ser uma maneira de conseguir isso, a partir de :h motion
.
"
Para a posição do cursor quando saiu do buffer atual pela última vez. O padrão é o primeiro caractere da primeira linha. Veja | salto na última posição | para saber como usar isso para cada arquivo aberto. Apenas uma posição é lembrada por buffer, não uma para cada janela. Enquanto o buffer estiver visível em uma janela, a posição não será alterada. {não no Vi}.
No entanto, se eu
- feche todas as janelas que mostram um buffer (mas o buffer ainda está presente na lista de buffers). ou:
- matar todas as instâncias do buffer
a marca parece não atualizar, como posso usar uma marca para pular para um local da última posição do cursor no buffer / arquivo?
fonte
Ctrl+o
eCtrl+i
...:h jump-motions
para obter mais informaçõesviminfo
"
marca quando você abre um arquivo. Eu realmente queria pular para a última posição do cursor manualmente. Além disso, eu simplesmente não conseguia entender quando a"
marca é definida e atualizada; portanto, para mim, a"
marca é inutilizável.Respostas:
Aqui está uma solução clássica: use
para pular para o último arquivo HTML e assim por diante ...
fonte
WinLeave
como noteiBufLeave
, não parece disparar quando você fecha uma divisão e o buffer ainda está aberto em outro lugar. Eu sei que é um pouco de um caso extremo, masWinLeave
parece funcionar sobre uma gama mais ampla de tipo situações "arquivo de fechamento", mas eu ainda estou apenas testando ...Eu escrevi esta declaração vimscript que parece funcionar
Explicação
BufLeave
comando automático: parece acionar quando vocêbd
:normal
- parece que por padrão, acommand
parte do autocmd é um comando ex. Então, para dizer ao vim para executar um comando no modo normal, você precisa adicionar:normal
ml
- definir uma marcal
(mnemônico: último )Uso
para recuperar a posição do cursor da última vez que você esteve no buffer, basta pressionar
ou
fonte
Se você deseja que o cursor restaure a última posição conhecida pelo viminfo , use
A resposta de romainl tem sido particularmente útil para mim, e tenho usado muito isso (desde que sou desenvolvedor da Web):
A última coisa potencialmente útil é a opção
:help 'nostartofline
:fonte