如何让Vim自定义WebPrint命令执行后自动返回Vim界面?
这个问题的核心是你当前的Chrome启动命令会让Vim等待外部进程结束,所以Vim会暂时退到后台,直到你关闭Chrome或者按Ctrl-C中断。要解决这个问题,只需要让Chrome在后台运行,不让Vim阻塞等待就行。
给你两个可行的修改方案:
方案1:用macOS原生的open命令启动Chrome(推荐)
open是macOS专门用来启动应用的命令,它启动应用后会立刻返回,不会让Vim一直等待。修改你的函数如下:
command! -range WebPrint <line1>,<line2>call Print() function! Print() '<,'>TOhtml wq silent !open -a "Google Chrome" %:p.html endfunction
方案2:让Chrome进程在后台运行
如果你想继续直接调用Chrome的二进制文件,可以在命令末尾加上&,让进程在后台执行,同时用silent屏蔽不必要的输出:
command! -range WebPrint <line1>,<line2>call Print() function! Print() '<,'>TOhtml wq silent !/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome %:p.html & endfunction
为什么这样有效?
silent:抑制Vim显示外部命令的执行输出,让界面更干净。&(方案2中):告诉系统把Chrome进程放到后台运行,Vim不需要等待它关闭就能回到编辑界面。open命令(方案1):本身设计就是启动应用后立即返回,天然不会阻塞Vim,是macOS下启动应用的标准方式。
这样修改后,你执行WebPrint命令生成HTML并打开Chrome后,会立刻回到Vim界面,再也不用手动按Ctrl-C啦。
内容的提问来源于stack exchange,提问作者Kevin Powell
相关产品推荐
相关产品推荐

