2009-04-01 8 views

Répondre

8

Placez ce qui suit dans votre fichier .vimrc ou dans un fichier personnalisé dans le dossier plugin vim.

function! s:close_buffers(name_regexp) 
    for buffer_number in range(1, bufnr('$')) 
     if !buflisted(buffer_number) 
      continue 
     endif 

     let name = fnamemodify(bufname(buffer_number), ':p') 
     if name =~ a:name_regexp 
      exec 'bdelete '.buffer_number 
     endif 
    endfor 
endfunction 

command! -nargs=1 CloseBuffers call s:close_buffers(<f-args>) 

Utiliser les commandes comme

:CloseBuffers include 
:CloseBuffers in.*e 

pour fermer les tampons qui matches de nom passé expression rationnelle.

Cela signifie que pour fermer tous les fichiers du dossier spécifique, vous pouvez utiliser

:CloseBuffers workspace/cpp 
:CloseBuffers /home/my/project 

Pour fermer tous les fichiers du répertoire courant et tous subdirs

:exec "CloseBuffers ".getcwd() 
4

Vous pouvez le faire de cette façon assez concise:

:silent! bufdo if expand('%')=~"some_regex"|bd|endif 

Ou si vous voulez des chemins absolus au lieu de relatif:

:silent! bufdo if expand('%:p')=~"some_regex"|bd|endif 

Ou si vous voulez qu'il vous invite pour le regex, vous pouvez définir cette manière interactive comme une mise en correspondance:

:let regex=input("> ")|silent! bufdo if expand('%:p')=~regex|bd|endif 

etc., etc.

Questions connexes