Depois de trabalhar em um projeto há algum tempo, começo a ver grandes lacunas entre os números consecutivos de buffer. Isso ocorre porque os buffers entre eles foram eliminados por vários motivos. Infelizmente, isso pode dificultar o acesso a um buffer específico ou selecionar um intervalo de buffers após a digitação :ls. Existe alguma maneira de renumerar todos os buffers abertos, iniciando em um, sem abrir todos os arquivos novamente?
O Vim não suporta a atribuição manual de números de buffer ou a reordenação de buffers depois que você os abre. Sua filosofia é que cada buffer obtenha um identificador que seja corrigido durante toda a vida útil desse buffer (na ajuda de :ls, ele observa que "cada buffer possui um número único. Esse número não muda ...").
Você pode usar a lista de argumentos, no entanto. Coloque todos os buffers abertos na lista de argumentos, exclua todos os buffers pendentes e abra tudo na lista de argumentos. Os seguintes comandos farão isso:
:argdel * (exclua a lista de argumentos existente)
:bufdo argadd % (para cada buffer, adicione o caminho do buffer à lista)
:1,1000bd (exclua os buffers de 1 a 1000; provavelmente existe uma maneira melhor de fazer isso)
:argdo e (para cada argumento, edite esse argumento)
Isso deixará um buffer extra vazio que o vim abre quando você exclui todos os buffers anteriores, mas é uma aproximação razoável da funcionalidade que você deseja. Você pode apenas :bdesse buffer extra.
Sua resposta diz não, mas parece que funciona muito bem!
precisa saber é o seguinte
(Eu quis dizer "não" no sentido de que você não pode fazê-lo sem reabrir arquivos). Na verdade, ele renumerou 1 para você? Eu pensei que fiz quando tentei pela primeira vez, mas agora estou vendo que não é renumerado para mim?
Sim, renumera para mim.
precisa saber é o seguinte
Sim, sou burro, encontrei meu erro.
"cada buffer obtém um identificador que é corrigido durante a vida útil desse buffer" na verdade, sessão!
14
"os números do buffer ficam loucos" Conte-me! Até o final do dia, eu tenho mais de 100 buffers. Mas, felizmente, como você pode ver nesta animação, você tem a tabconclusão de nomes de buffer.
Portanto, mesmo que você não possa renumerar os buffers, ainda poderá pular facilmente.
Não sei se está claro na animação, mas a "conclusão da guia" é diferente da conclusão da guia da linha de comando. É mais como um "substituto de guia de resolução de ambiguidade". Significando que na linha de comando eu teria que digitar sctabentão, setabmas aqui o vim faz uma pesquisa 'se' e a substitui pela primeira (e única) correspondência. Se eu tivesse digitado, testtabele corresponderia a 'generate_test_data.py' e, tabnovamente, corresponderia a 'scripts / setup_test_data.sh' e, em seguida tab, teria retornado, etc.
O ponto é que você pode adquirir o hábito de digitar apenas :b <minimum amount of unambiguous characters>tabpara pular para o documento que deseja. Eu acho que isso é ainda melhor do que lembrar "Meus buffers são 1: foo 2: bar 3: etc", que é como eu costumava fazer quando era novato.
Isso não altera os números do buffer, mas você pode selecionar um buffer da esquerda para a direita pelo número da linha na linha de tabulação. Esta é a minha configuração para companhia aérea em .vimrc:
"set airline
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#formatter = 'default'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#fnametruncate = 16
let g:airline#extensions#tabline#fnamecollapse = 2
let mapleader=","
let g:airline#extensions#tabline#buffer_idx_mode = 1
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9
Não é a resposta para a pergunta, mas corrige o problema com os números de buffer malucos. Apenas uma recomendação para mostrar apenas buffer_numbers: switch_buffers_and_tabs=1ebuffer_idx_mode=0
caligari
6
De acordo com a documentação, os números de buffer nunca mudam
Each buffer has a unique number. That number will not change,
so you can always go to a specific buffer with ":buffer N" or
"N CTRL-^", where N is the buffer number.
A única maneira de pensar em renumerar os buffers é reiniciar o vim.
Pergunta antiga, mas como isso aparece no topo da pesquisa do Google, deixarei isso aqui para pesquisas futuras. Como Bruno sugeriu, um localizador nebuloso que suporta listas de buffers é o caminho a percorrer. Eu pessoalmente uso e recomendo o fzf-vim . Ele fornece o comando :FZFBuffers, que se parece com isso:
Os números de buffer são exibidos à esquerda, caso você precise deles, mas com um localizador nebuloso, talvez você nunca precise usá-los novamente. Lembre-se de parte do nome do arquivo e, geralmente, são pressionadas 2 a 5 teclas. Pessoalmente, mapeei esse comando com um pressionamento de tecla, e alternar entre buffers é quase instantâneo para mim!
"os números do buffer ficam loucos" Conte-me! Até o final do dia, eu tenho mais de 100 buffers. Mas, felizmente, como você pode ver nesta animação, você tem a tabconclusão de nomes de buffer.
Portanto, mesmo que você não possa renumerar os buffers, ainda poderá pular facilmente.
Não sei se está claro na animação, mas a "conclusão da guia" é diferente da conclusão da guia da linha de comando. É mais como um "substituto de guia de resolução de ambiguidade". Significando que na linha de comando eu teria que digitar
sc
tabentão,se
tabmas aqui o vim faz uma pesquisa 'se' e a substitui pela primeira (e única) correspondência. Se eu tivesse digitado,test
tabele corresponderia a 'generate_test_data.py' e, tabnovamente, corresponderia a 'scripts / setup_test_data.sh' e, em seguida tab, teria retornado, etc.O ponto é que você pode adquirir o hábito de digitar apenas
:b <minimum amount of unambiguous characters>
tabpara pular para o documento que deseja. Eu acho que isso é ainda melhor do que lembrar "Meus buffers são 1: foo 2: bar 3: etc", que é como eu costumava fazer quando era novato.fonte
Você pode usar vim-airlines. Este plug-in tem um comportamento que talvez possa resolver seu problema:
Veja a linha 470-479 em airlines.txt
Isso não altera os números do buffer, mas você pode selecionar um buffer da esquerda para a direita pelo número da linha na linha de tabulação. Esta é a minha configuração para companhia aérea em
.vimrc
:Minha linha de tabulação:
fonte
switch_buffers_and_tabs=1
ebuffer_idx_mode=0
De acordo com a documentação, os números de buffer nunca mudam
A única maneira de pensar em renumerar os buffers é reiniciar o vim.
fonte
Pergunta antiga, mas como isso aparece no topo da pesquisa do Google, deixarei isso aqui para pesquisas futuras. Como Bruno sugeriu, um localizador nebuloso que suporta listas de buffers é o caminho a percorrer. Eu pessoalmente uso e recomendo o fzf-vim . Ele fornece o comando
:FZFBuffers
, que se parece com isso:Os números de buffer são exibidos à esquerda, caso você precise deles, mas com um localizador nebuloso, talvez você nunca precise usá-los novamente. Lembre-se de parte do nome do arquivo e, geralmente, são pressionadas 2 a 5 teclas. Pessoalmente, mapeei esse comando com um pressionamento de tecla, e alternar entre buffers é quase instantâneo para mim!
fonte