在我的 vimrc 配置中有这样一个函数,作用是按两次 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 窗口呢?
可以通过 ls! 命令取到所有的 buffer 列表,但是如何拿到这个结果呢?
这时候就要用到 redir 命令了,详细的使用方法可以 :help redir 查看。这里只解释下上面是如何用的。
:redi[r] => {var} 这个语法是把输出重定向到 var 变量。
redir => message
silent execute "ls!"
redir ENDls! 命令的输出内容就会赋值给变量 message。
后面的处理就不多解释了,就是切字符串,对每行字符串进行匹配判断。