在:bd之后关闭所有缓冲区时退出vim
我想要在:bd之后关闭所有缓冲区时退出vim,vim,Vim,我想要:q作为:bd,因为我真的不希望缓冲区停留在长时间运行的vim会话中(在该会话中,缓冲区可以容纳一个.swp文件与同一文件的另一个vim会话冲突) 唯一的问题是:如果是剩下的最后一个缓冲区,bd不会退出vim。我怎样才能做到这一点呢?像这样的方法应该可以奏效: fun! s:quitiflast() bdelete let bufcnt = len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) if bufcnt
:q
作为:bd
,因为我真的不希望缓冲区停留在长时间运行的vim
会话中(在该会话中,缓冲区可以容纳一个.swp
文件与同一文件的另一个vim
会话冲突)
唯一的问题是
:如果是剩下的最后一个缓冲区,bd
不会退出vim
。我怎样才能做到这一点呢?像这样的方法应该可以奏效:
fun! s:quitiflast()
bdelete
let bufcnt = len(filter(range(1, bufnr('$')), 'buflisted(v:val)'))
if bufcnt < 2
echo 'shutting everything down'
quit
endif
endfun
command! Bd :call s:quitiflast()
cmap q Bd
有趣!s:quitiflast()
核销
设bufcnt=len(过滤器(范围(1,bufnr(“$”),“buflisted(v:val)”)
如果bufcnt<2
echo“关闭一切”
退出
恩迪夫
结束
命令!Bd:调用s:quitiflast()
cmap q Bd
您看过吗?但是,它确实说明了这一点,这可能无法满足您的问题:“如果您没有打开其他文件,则显示一个空文件。”谢谢Micah。实际上,我不需要花哨的BBye
功能。我想:q
意思是:bd
,但如果这是最后一个缓冲区,就做:q
(即退出vim
)吧。试试这个:.Plaincmap q bd
真是个坏主意,之后你就不能在命令行上写任何包含“q”的字了。有关更好的方法,请参阅。