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

从目录及其子目录关闭Vim中的文件,vim,Vim,vim中有没有一种方法可以关闭某个目录及其子目录中的所有文件(缓冲区,我们不要进入缓冲区)?将以下内容放入.vimrc或vim插件文件夹中的某个自定义文件中 function! s:close_buffers(name_regexp) for buffer_number in range(1, bufnr('$')) if !buflisted(buffer_number) continue endif let n

vim中有没有一种方法可以关闭某个目录及其子目录中的所有文件(缓冲区,我们不要进入缓冲区)?

将以下内容放入.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>)
关闭名称与传递的regexp匹配的缓冲区

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

:CloseBuffers workspace/cpp
:CloseBuffers /home/my/project
关闭当前目录和所有子目录中的所有文件

:exec "CloseBuffers ".getcwd()

将以下内容放入.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>)
关闭名称与传递的regexp匹配的缓冲区

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

:CloseBuffers workspace/cpp
:CloseBuffers /home/my/project
关闭当前目录和所有子目录中的所有文件

:exec "CloseBuffers ".getcwd()

您可以非常简洁地这样做:

:silent! bufdo if expand('%')=~"some_regex"|bd|endif
或者如果您想要绝对路径名而不是相对路径名:

:silent! bufdo if expand('%:p')=~"some_regex"|bd|endif
或者,如果希望它以交互方式提示您输入正则表达式,您可以将其设置为映射:

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

等等等等。

您可以用这种方式非常简洁地完成:

:silent! bufdo if expand('%')=~"some_regex"|bd|endif
或者如果您想要绝对路径名而不是相对路径名:

:silent! bufdo if expand('%:p')=~"some_regex"|bd|endif
或者,如果希望它以交互方式提示您输入正则表达式,您可以将其设置为映射:

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