Eu gostaria de ir para o arquivo que acabei de editar, última e próxima, como os plugins MRU fazem.
:bnext
e :bprev
funciona algumas vezes, mas na maioria das vezes acabo em algum arquivo obscuro. Não me lembro de editar e fui forçado a voltar ao plugin MRU.
Existe uma maneira de consertar isso?
Ctrl-^
alterna entre os dois últimos arquivos. Qual é a melhor maneira de navegar entre mais?
Entendo que pode ser complicado, mas concordo com qualquer coisa que possa melhorar o :bn
:bp
comportamento atual . Os buffers que vejo frequentemente estão totalmente fora de lugar. Talvez haja um plugin que possa acompanhar os arquivos recentes e fornecer ganchos para que eu possa criar mapeamentos?
Responder aos comentários me esclareceu um pouco. Acredito que o que eu quero é poder mover os arquivos na ordem dos últimos salvamentos. Dessa forma, se eu voltar no histórico, a ordem não será alterada até que eu salve o arquivo que se torna o último e faça um passo "de volta" para o arquivo salvo antes disso, ou seja, o de onde eu comecei.
Algo como um Ctrl-O
Ctrl-I
par que alterna os arquivos imediatamente sem pular o buffer atual. Mais ou menos como u
e U
em netrw:
u Change to recently-visited directory |netrw-u|
U Change to subsequently-visited directory |netrw-U|
Ctrl-O
(ou às vezesCtrl-T
) até chegar lá.Ctrl-O
eCtrl-I
. Mas ele pula entre os pontos de edição e isso interrompe o fluxo. Tudo o que eu quero ir e voltar entre buffers em ordem de acesso. Como os plug-ins exibem uma lista dos arquivos mais recentes? Eles os acompanham internamente?Ctrl-^
alterna entre os dois últimos arquivos. Mas qual é a melhor maneira de navegar entre mais?Ctrl-O/I
são fwiw específicos da janela, enquanto o MRU é geralmente global. Se você deseja que a ordem seja acessada mais recentemente, assim que você voltar uma vez, a ordem da lista mudará, complicando ainda mais as coisas.Respostas:
Eu escrevi uma pequena função para pressionar CTRL-O repetidamente para mim, até que o buffer mude.
Você pode encontrá-lo aqui . Mapeei-o para CTRL-U, mas você poderia substituir CTRL-O se quisesse.
Você provavelmente poderia escrever algo semelhante para
<C-I>
.Problemas:
Palavras-chave:
:jumps
lista os locais históricos pelos quais o CTRL-O voltará.fonte
:kwbd
para fechar alguns buffers, que o Vim volta para os buffers anteriores na ordem histórica reversa esperada. Talvez o Vim tenha uma lista MRU que não esteja compartilhando conosco, ou talvez escolha qual buffer retornar com base no histórico de localização CTRL-O (:jumps
).autocmd InsertLeave * normal mZ
vai se lembrar do último arquivo editado na marca mundial Z . Você pode voltar com issog'Z
. // Eu tenho,nmap <C-y> g'Z
mas continuo a usar Ctrl-U com mais frequência.Você pode usar
:ls
para mostrar todos os buffers. Por exemplo:Para voltar ao buffer
ext.markdown
, use:e +Nbuf
, ondeN
está o número do buffer da primeira coluna. Por exemplo::e +2buf
.Você pode criar uma função simples para uma experiência mais interativa:
Depois de usar
:ChooseBuf
ou<Leader>b
você pode apenas digitar o número do buffer que deseja editar.Isso não é "usado mais recentemente", pois o pedido foi "aberto mais recentemente" (provavelmente é também por isso que
:bnext
/:bprev
não funciona como esperado).fonte
<C-6>
é o que você precisa, que o leva de volta ao buffer anterior que você tinha aberto antes do atual. Também existem:bprev
e:bnext
você pode usar para o mesmo.fonte
<C-6>
não é ruim, mas não posso usar isso para pular dois buffers.bprev
ebnext
não estão em ordem de saltos.<C-6>
, é<C-^>
. Enquanto em muitos emuladores de terminal não há distinção, em alguns (incluindo o que acompanha o OS X), existe. Para o último caso,Shift
é necessário o uso da chave (assumindo o layout Qwerty).Você também pode usar
:oldfiles
para obter uma lista dos arquivos editados.A lista terá números associados aos nomes de arquivos. Escolha um arquivo, anote o número (digamos 14) e abra-o com
:edit #<14
Você também pode executar outros comandos nesse arquivo ou passar vários arquivos para um comando de uma só vez. Mais sobre isso AQUI
fonte
:bro[wse] ol[dfiles][!]