从目录及其子目录中关闭Vim中的文件

Roo*_*ook 1 vim

在vim中是否有办法从某个目录及其子目录中关闭所有文件(缓冲区,让我们不进入)?

Myk*_*yev 8

将以下内容放入.vimrc或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>)
Run Code Online (Sandbox Code Playgroud)

使用命令

:CloseBuffers include
:CloseBuffers in.*e
Run Code Online (Sandbox Code Playgroud)

关闭名称匹配传递regexp的缓冲区.

这意味着要关闭您可以使用的特定文件夹中的所有文件

:CloseBuffers workspace/cpp
:CloseBuffers /home/my/project
Run Code Online (Sandbox Code Playgroud)

要关闭当前目录和所有子目录中的所有文件

:exec "CloseBuffers ".getcwd()
Run Code Online (Sandbox Code Playgroud)