如果NERDTree和标记列表是最后也是唯一的缓冲区,则自动退出Vim
基本上,当Vim启动时,my如果NERDTree和标记列表是最后也是唯一的缓冲区,则自动退出Vim,vim,nerdtree,taglist,Vim,Nerdtree,Taglist,基本上,当Vim启动时,my.vimrc启动并NERDTree,在正常文件缓冲区的左侧和右侧拆分 我想在关闭最后一个缓冲区/选项卡时关闭Vim,只剩下标记列表和NERDTree拆分。我已经在使用NERDTree了,当NERDTree是唯一也是最后一个打开的缓冲区时,它的效果非常好 我知道在StackOverflow上已经讨论过这个话题,但我找不到任何与NERDTree和TagList相关的东西 谢谢像。。。(未经测试) 然后将该函数绑定到自动命令 au WinEnter * call NoExc
.vimrc
启动并NERDTree,在正常文件缓冲区的左侧和右侧拆分
我想在关闭最后一个缓冲区/选项卡时关闭Vim,只剩下标记列表和NERDTree拆分。我已经在使用NERDTree了,当NERDTree是唯一也是最后一个打开的缓冲区时,它的效果非常好
我知道在StackOverflow上已经讨论过这个话题,但我找不到任何与NERDTree和TagList相关的东西
谢谢像。。。(未经测试)
然后将该函数绑定到自动命令
au WinEnter * call NoExcitingBuffersLeft()<cr>
au WinEnter*调用NoExcitingBuffersLeft()
我不使用这两个插件中的任何一个,因此您可能需要调整t:NERDTreeBufName
和\uuuuuu标记\uuuuu列表
类似于。。。(未经测试)
然后将该函数绑定到自动命令
au WinEnter * call NoExcitingBuffersLeft()<cr>
au WinEnter*调用NoExcitingBuffersLeft()
我不使用这两个插件中的任何一个,因此您可能需要调整
t:NERDTreeBufName
和\uuuuu标记\uuuuu列表
改进Conner的想法,我在这里提出了一个功能解决方案
" If only 2 windows left, NERDTree and Tag_List, close vim or current tab
fun! NoExcitingBuffersLeft()
if winnr("$") == 3
let w1 = bufname(winbufnr(1))
let w2 = bufname(winbufnr(2))
let w3 = bufname(winbufnr(3))
if (exists(":NERDTree")) && (w1 == "__Tag_List__" || w2 == "__Tag_List__" || w3 == "__Tag_List__")
if tabpagenr("$") == 1
exec 'qa'
else
exec 'tabclose'
endif
endif
endif
endfun
autocmd BufWinLeave * call NoExcitingBuffersLeft()
BufWinLeave事件需要vim 7.0+。
如果有多个选项卡打开,则关闭该选项卡,否则退出vim。
这样,当您关闭最后一个不是NERDTree或Tag_List的窗口时,而不是进入这两个窗口中的一个时,auto命令将被绑定。改进Conner的想法,我在这里提出了一个功能解决方案
" If only 2 windows left, NERDTree and Tag_List, close vim or current tab
fun! NoExcitingBuffersLeft()
if winnr("$") == 3
let w1 = bufname(winbufnr(1))
let w2 = bufname(winbufnr(2))
let w3 = bufname(winbufnr(3))
if (exists(":NERDTree")) && (w1 == "__Tag_List__" || w2 == "__Tag_List__" || w3 == "__Tag_List__")
if tabpagenr("$") == 1
exec 'qa'
else
exec 'tabclose'
endif
endif
endif
endfun
autocmd BufWinLeave * call NoExcitingBuffersLeft()
BufWinLeave事件需要vim 7.0+。
如果有多个选项卡打开,则关闭该选项卡,否则退出vim。
这样,当您关闭最后一个不是NERDTree或Tag_List的窗口时,而不是进入两个窗口中的一个时,auto命令与此绑定。让Tlist_仅退出windows=1
将关闭标记列表窗口如果这是最后一个窗口,请查看以了解有关“仅列表退出”窗口的更多信息Windows,我不确定您是否正在查找此窗口,如果没有,请删除我的答案。让t列表退出\u onlyWindows=1
如果是最后一个窗口,将关闭Tag_列表窗口,请查看有关Tlist_Exit_only的更多信息Windows,我不确定您是否正在查找此信息,如果没有,请删除我的答案。这是一个很好的可扩展解决方案。要针对其他插件/窗口类型进行验证,只需将它们添加到正则表达式检查中
function! s:CloseAddons()
for w in range(1, winnr('$'))
if bufname(winbufnr(w)) !~# '__Tagbar\|NERD_tree_\|coc-explorer'
\ && getbufvar(winbufnr(w), "&buftype") !=? "quickfix"
return
endif
endfor
if tabpagenr('$') ==? 1
execute 'quitall'
else
execute 'tabclose'
endif
endfunction
这是一个很好的可扩展解决方案。要针对其他插件/窗口类型进行验证,只需将它们添加到正则表达式检查中
function! s:CloseAddons()
for w in range(1, winnr('$'))
if bufname(winbufnr(w)) !~# '__Tagbar\|NERD_tree_\|coc-explorer'
\ && getbufvar(winbufnr(w), "&buftype") !=? "quickfix"
return
endif
endfor
if tabpagenr('$') ==? 1
execute 'quitall'
else
execute 'tabclose'
endif
endfunction
几个月后,这对我很有用:-)(顺便说一句,
\u标签\u列表\uuu
是正确的,没有检查NERDTree)@FlorianMargaine很高兴它有帮助!几个月后,这对我很有用:-)(顺便说一句,\u标签\u列表\uuu
是正确的,没有检查NERDTree)@FlorianMargaine很高兴它有帮助!