在 Vim 中以编程方式关闭多个缓冲区
Close Multiple Buffers Programatically in Vim
我正在尝试编写一个函数,允许我切换 TPope 的 Vim Fugitive git-log 查看器。
该插件允许您通过打开 git 个对象作为以 fugitive://
开头的缓冲区来查看项目的历史记录
我正在尝试在 vimscript 中编写一个函数,允许我在所有这些缓冲区打开时立即关闭它们。该功能目前看起来像这样,并且非常接近工作:
function! ToggleGLog()
if buflisted(bufname('fugitive'))
:cclose
:bd fugitive*<C-a><cr>
else
Glog
endif
endfunction
command! ToggleGLog :silent :call ToggleGLog()
nnoremap <silent> <leader>gl :ToggleGLog<CR>
我遇到的问题是函数的 <C-a><cr>
部分不起作用。通常,<C-a>
会扩展 *
选择器以匹配所有以“fugitive.”开头的缓冲区。
我该如何编写才能使那些缓冲区的名称自动扩展并且 :bd
命令将它们全部关闭?
下面的怎么样?
execute "normal! :bdelete fugitive*\<C-a>\<CR>"
normal
让 Vim 运行 右边的命令就像您输入的一样,包括像 <C-a>
这样的键。但由于后者有些特殊,需要解读;这就是 execute
在这里所做的。 (参见 :help normal
的结尾部分。)
我正在尝试编写一个函数,允许我切换 TPope 的 Vim Fugitive git-log 查看器。
该插件允许您通过打开 git 个对象作为以 fugitive://
我正在尝试在 vimscript 中编写一个函数,允许我在所有这些缓冲区打开时立即关闭它们。该功能目前看起来像这样,并且非常接近工作:
function! ToggleGLog()
if buflisted(bufname('fugitive'))
:cclose
:bd fugitive*<C-a><cr>
else
Glog
endif
endfunction
command! ToggleGLog :silent :call ToggleGLog()
nnoremap <silent> <leader>gl :ToggleGLog<CR>
我遇到的问题是函数的 <C-a><cr>
部分不起作用。通常,<C-a>
会扩展 *
选择器以匹配所有以“fugitive.”开头的缓冲区。
我该如何编写才能使那些缓冲区的名称自动扩展并且 :bd
命令将它们全部关闭?
下面的怎么样?
execute "normal! :bdelete fugitive*\<C-a>\<CR>"
normal
让 Vim 运行 右边的命令就像您输入的一样,包括像 <C-a>
这样的键。但由于后者有些特殊,需要解读;这就是 execute
在这里所做的。 (参见 :help normal
的结尾部分。)