Usando o editor vim, uma tarefa comum é procurar buffers. Agora eu uso comandos padrão como :ls
ou a :bnext
. Na verdade, eu configurei no meu .vimrc:
"move amongs buffers with CTRL
map <C-J> :bnext<CR>
map <C-K> :bprev<CR>
Gostaria de procurar buffers como lista na janela do quickfix, da maneira simples (= excelente) que o plug-in MRU implementa.
Existe um plugin tão simples quanto o MRU, mas atuando em buffers?
OK, uma solução possível poderia ser usar o :CtrlpBuffers
comando, parte do plugin Ctrlp, mas eu não sou um grande fã do Ctrlp, porque às vezes há beahviours estranhos que eu não entendo completamente (as seleções de modo difuso ...); então estou procurando algo realmente simples como o plugin MRU.
BTW, eu brinquei com o :cexpr {expr}
comando, tentando preencher as janelas do quickfix com o conteúdo da :buffers
lista, sem sucesso (talvez porque minha ignorância programação vimscripts)
Alguma sugestão ?
:bnext
vez de:cnext
?Respostas:
Você pode preencher a lista de correções rápidas com cada buffer como este:
setqflist()
pega uma lista de itens do dicionário que descreve cada erro (nome do arquivo, número da linha, posição etc.). Nesse caso, estamos especificando um conjunto mínimo de informações: o número do buffermap()
pega uma lista e uma expressão (uma string) e retorna uma nova lista da expressão aplicada a cada item da lista de entrada. Aqui, estamos pegando uma lista de números de buffer listados e formatando-os para uso emsetqflist()
('{"bufnr": v:val}'
, ondev:val
é o valor do item na lista)filter()
filtra uma lista, removendo elementos que não atendem a uma determinada expressão. Aqui está a expressãobuflisted(v:val)
, significando que o número do buffer existe e está listado, ou seja, aparece na:ls
saídarange(a, b)
gera uma lista de números dea
parab
bufnr()
retorna o número de um determinado nome de buffer. Se o argumento for'$'
, ele retornará o número mais alto do bufferÉ muito para digitar, e não é muito memorável, então você pode envolvê-lo em um comando no seu vimrc:
Agora você pode usar apenas
:Qbuffers
para preencher a lista de correções rápidas.Se você deseja que isso seja atualizado automaticamente à medida que novos buffers são adicionados, você pode fazer algo assim:
No entanto, eu não recomendaria isso, pois tornará a lista do quickfix bastante inutilizável para coisas como
:make
ou:grep
.fonte
Você deve tentar este mapeamento:
No prompt, digite o número do buffer desejado e pressione Enter.
fonte
Dê uma olhada no plug-in bufexplorer . Ele abre uma lista navegável de todos os buffers em uma barra lateral, semelhante ao plug-in MRU mencionado. Além disso, existem vários outros plugins no vim.org .
PS: Você fez a mesma pergunta no Stack Overflow ; não envie a pergunta idêntica a vários sites em paralelo!
fonte