Open hanxi opened 5 years ago
在我的 vimrc 配置中有这样一个函数,作用是按两次 Ctrl + C 关闭素有插件窗口。
Ctrl + C
function! ClosePluginWindow() " Close quickfix cclose " Close Leaderf Buffer redir => message silent execute "ls!" redir END let l:buflist = split(message, '\n') for l:one in l:buflist let l:items = split(l:one, '"') if match(l:items[0], "u*a-") >= 0 let l:bufid = matchstr(l:items[0], '\d\+') exe 'bd! '.l:bufid endif endfor endfunction " 关闭插件窗口 map <C-C><C-C> :call ClosePluginWindow()<cr>
关闭 quickfix 窗口有现成的命令 cclose,但是如何关闭某些只读的 buffer 窗口呢?
cclose
buffer
可以通过 ls! 命令取到所有的 buffer 列表,但是如何拿到这个结果呢?
ls!
这时候就要用到 redir 命令了,详细的使用方法可以 :help redir 查看。这里只解释下上面是如何用的。
redir
:help redir
:redi[r] => {var} 这个语法是把输出重定向到 var 变量。
:redi[r] => {var}
var
redir => message silent execute "ls!" redir END
ls! 命令的输出内容就会赋值给变量 message。
message
后面的处理就不多解释了,就是切字符串,对每行字符串进行匹配判断。
在我的 vimrc 配置中有这样一个函数,作用是按两次
Ctrl + C
关闭素有插件窗口。关闭 quickfix 窗口有现成的命令
cclose
,但是如何关闭某些只读的buffer
窗口呢?可以通过
ls!
命令取到所有的buffer
列表,但是如何拿到这个结果呢?这时候就要用到
redir
命令了,详细的使用方法可以:help redir
查看。这里只解释下上面是如何用的。:redi[r] => {var}
这个语法是把输出重定向到var
变量。ls!
命令的输出内容就会赋值给变量message
。后面的处理就不多解释了,就是切字符串,对每行字符串进行匹配判断。