Abro vários arquivos no Vim, por exemplo, executando
vim a/*.php
que abre 23 arquivos.
Em seguida, faço a minha edição e corro o seguinte duas vezes
:q
que fecha todos os meus buffers.
Como você pode fechar apenas um buffer no Vim?
Abro vários arquivos no Vim, por exemplo, executando
vim a/*.php
que abre 23 arquivos.
Em seguida, faço a minha edição e corro o seguinte duas vezes
:q
que fecha todos os meus buffers.
Como você pode fechar apenas um buffer no Vim?
Respostas:
Uma palavra de cautela: "o w em bw não significa gravação, mas wipeout!"
Mais dos manuais:
: bd
Descarregue o buffer [N] (padrão: buffer atual) e exclua-o da lista de buffers. Se o buffer foi alterado, isso falhará, a menos que [!] Seja especificado; nesse caso, as alterações serão perdidas. O arquivo permanece inalterado.
Se você sabe o que está fazendo, também pode usar: bw
: bw
Como |: bdelete |, mas realmente exclua o buffer.
:bw
se "você sabe o que está fazendo", o que eu não sei, então acho que vou usar :bd
.
:bd
) também fecha a guia. O que você provavelmente quer é :bd n .. [m]
ou :n,mbd
para números específicos ou intervalo de números para fechar, o que você pode fazer sem olhar para os buffers
w
é abreviação de write
comando, de acordo com o manual do Vim, além disso, não há menção a qualquer "limpeza". A descrição do comando ( help write
) começa com "Grave o buffer inteiro no arquivo atual".
w
o bw
comando significa apagamento, ele não está falando sobre o w
comando. Ele colocou este aviso lá para que as pessoas não acho que o bw
comando significava gravação tampão (o que não significa tampão wipeout.)
Se isso não for tornado óbvio pelas respostas anteriores:
: bd fechará o buffer atual. Se você não quiser pegar a lista de buffers.
:bd
somente fecha o buffer enquanto (o que isso significa) enquanto :bw
também limpa todas as variáveis e REALMENTE o elimina do ls
buffer.
Verifique seu ID de buffer usando: buffers
você verá uma lista de buffers como
1 a.php
2 b.php
3 c.php
se você deseja remover o b.php do buffer
:2bw
se você deseja remover / fechar todos os buffers
:1,3bw
Em vez de procurar a saída do comando: ls e excluir (descarregar, limpar ..) um buffer especificando seu número, acho que o uso de nomes de arquivo geralmente é mais eficaz.
Por exemplo, depois que abri um arquivo .txt para atualizar minhas lembranças de algum ponto importante ... copie e cole algumas linhas de texto para usar como um modelo das sortes ... etc. Eu digitaria o seguinte:
:bd txt <Tab>
Observe que a sequência correspondente não precisa estar no início do nome do arquivo.
A tabela acima exibe a lista de nomes de arquivos que correspondem a 'txt' na parte inferior da tela e mantém o comando: bd que eu digitei inicialmente intacto, pronto para ser concluído.
Aqui está um exemplo:
doc1.txt doc2.txt
:bd txt
Eu poderia retroceder sobre o bit 'txt' e digitar o nome do arquivo que desejo excluir, mas onde isso se torna realmente conveniente é que não preciso: se eu pressionar a tecla Tab pela segunda vez, o Vim concluirá automaticamente meu comando com a primeira partida:
:bd doc1.txt
Se eu quiser me livrar desse buffer em particular, só preciso pressionar Enter.
E se o buffer que eu quero excluir for a segunda (terceira .. etc.) correspondência, só preciso continuar pressionando a tecla Tab para fazer o meu comando: bd percorrer a lista de correspondências.
Naturalmente, esse método também pode ser usado para alternar para um determinado buffer por meio de comandos como: b ..: sb .. etc.
Essa abordagem é particularmente útil quando a opção 'oculta' do Vim é definida, porque a lista de buffers pode rapidamente se tornar bastante grande, cobrindo várias telas e dificultando a localização do buffer específico que estou procurando.
Para aproveitar ao máximo esse recurso, provavelmente é melhor ler o arquivo de ajuda do Vim a seguir e ajustar o comportamento da conclusão da linha de comando da Tab de acordo para que melhor se adapte ao seu fluxo de trabalho:
:help wildmode
O comportamento que descrevi acima resulta da seguinte configuração, que escolhi por razões de consistência para emular a conclusão do bash:
:set wildmode=list:longest,full
Ao contrário de usar números de buffer, o mérito dessa abordagem é que eu me lembro de pelo menos parte de um determinado nome de arquivo, permitindo-me direcionar o buffer diretamente, em vez de precisar primeiro procurar seu número através do comando: ls.
[EDIT: essa foi uma sugestão estúpida de uma época em que eu não conhecia o Vim o suficiente. Por favor, não use guias em vez de buffers; guias são os "layouts de janela" do Vim]
Talvez mude para o uso de guias?
vim -p a/*.php
abre os mesmos arquivos em guias
gt
e gT
alterne as guias
:q
fecha apenas a guia atual
:qa
fecha tudo e sai
:tabo
fecha tudo, exceto a guia atual
vim-nox
pacote do Ubuntu tem suporte a Ruby.
Aqueles que usam um plug-in de navegação em buffer ou em árvore, como Buffergator ou NERDTree, precisarão alternar essas divisões antes de destruir o buffer atual - caso contrário, você enviará suas divisões para wonkyville
Eu uso:
"" Buffer Navigation
" Toggle left sidebar: NERDTree and BufferGator
fu! UiToggle()
let b = bufnr("%")
execute "NERDTreeToggle | BuffergatorToggle"
execute ( bufwinnr(b) . "wincmd w" )
execute ":set number!"
endf
map <silent> <Leader>w <esc>:call UiToggle()<cr>
Onde " NERDTreeToggle
" nessa lista é o mesmo que digitar :NERDTreeToggle
. Você pode modificar esta função para integrar com sua própria configuração.
:bdelete
ou :bwipeout
. Veja minha resposta .
Se você deseja fechar um buffer sem destruir o layout da janela (layout atual com base em divisões), você pode usar um plug-in como bbye . Com base nisso, você pode simplesmente usar
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
Ou simplesmente crie um mapeamento .vimrc
para facilitar o acesso, como
:nnoremap <Leader>q :Bdelete<CR>
- Feche e remova o buffer.
- Mostrar outro arquivo nessa janela.
- Mostre um arquivo vazio se você não tiver outros arquivos abertos.
- Não deixe buffers inúteis [sem arquivo] se você decidir editar outro arquivo nessa janela.
- Funciona mesmo se um arquivo estiver aberto em várias janelas.
- Trabalhe bem com vários exploradores de buffer e barras de tabulação.
O Vim possui dois comandos para fechar um buffer:
:bdelete
e:bwipeout
. O primeiro remove o arquivo da lista de buffers, limpa suas opções, variáveis e mapeamentos. No entanto, ele permanece no jumplist, entãoCtrl-o
você volta e reabre o arquivo. Se não é isso que você deseja, use:bwipeout
ou o equivalente do Bbye:Bwipeout
onde você teria usado:bdelete
.
vim -o a/*.php
(ou-O
para usar janelas verticais) e evitar a navegação no buffer - este é um ótimo método para apenas alguns arquivos, mas com 23 arquivos, eles terão apenas algumas linhas / colunas cada.