Ultimamente, tenho reduzido drasticamente o número de plugins que estou usando, então estou procurando respostas usando apenas os recursos internos do Vim.
Tenho notado uma falha no meu fluxo de trabalho quando estou editando muitos buffers: estou em um buffer e quero mudar para outro que não lembro o nome e que não é o buffer alternativo . Portanto, o uso :b#não é possível e o uso da conclusão com o comando :btambém não é conveniente.
Para fazer isso, eu estava fazendo o seguinte:
- Primeiro uso
:bufferspara obter a lista de buffers abertos - Lembre-se do número do buffer que eu quero usar
- Pressione Enterpara fechar a lista de buffers
- Use
:bXcomXo número do buffer a ser usado.
Esse fluxo de trabalho me pareceu bastante pesado, então adicionei as seguintes linhas ao meu
.vimrc:
" Improve the navigation in the buffers
nnoremap <Leader><S-b> :B<CR>
command! B call Buffers()
function! Buffers()
execute "buffers"
let buffer=input("Enter a buffer:")
execute "b" . buffer
endfunction
Isso me dá um comando :B(e um mapeamento) que chama a função :bufferswait for a input e, finalmente, chama :bseguido pela entrada.
Funciona bem, mas estou surpreso por ter desenvolvido essa função: normalmente o Vim tem um fluxo de trabalho padrão bastante eficiente, por isso estou me perguntando se existe uma maneira melhor de mudar para um buffer do qual não sei nada exceto que ele já foi aberto na minha sessão de edição.
:b#não é o que estou procurando, mas sim, o fato de que você pode salvar um pressionamento de tecla digitando diretamente :bsem pressionar enterantes é interessante. (Na verdade, que é talvez leve demais para ser uma resposta, mas valeu a pena um comentário :-))
#personagem como substituto de um número (buffer), em vez do #caractere literal .



:lsseguido:b#(não precisa pressionar return ou escape primeiro, pode ir diretamente da lista de buffers em 'ls'.) (Publicando como comentário porque não parece substancial o suficiente para ser uma resposta? 'estou faltando alguma coisa e respondendo a pergunta errada).