Answers:
发生这种情况是因为通常Vim会切换到备用屏幕并在那里工作。退出后,Vim会切换回去,因此您看不到Vim会话中留下的任何东西,但是即使在启动Vim之前执行命令的结果也是如此。
在(链接)中解释了此功能:h xterm-screens
因此,您基本上不希望这样做,因此希望将其禁用。您可以通过将:set t_ti= t_te=
执行此操作的终端代码设置为空来执行此操作。
放在一起,您将要像这样启动Vim:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
我们正在重置该'more'
选项,以使您看不到提示输入的提示。
less
用途。只是将其插入不太像这样vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!' | less
。布局可能一开始就搞砸了(在我的终端中),但是按<CL>后,一切都很好而且很花哨。
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames|q!'
,只有“快速闪烁”,命令退出,代码为0,没有输出。我想念什么吗?
我感谢Christian Brabandt提供的答案,但我认为更好的答案是使用另一个-c命令来分隔quit命令,如下所示:
vim -c ':set t_ti= t_te= nomore' -c 'scriptnames' -c 'q!'
使用此方法意味着您可以将许多不同的命令串在一起,然后使用最后的'q!'。退出vim。
对于需要像手动启动一样完全加载vim的情况,可以这样做:
vim -c "autocmd! CursorHold * <commands to run>"
例如,我想将:map
shell 的输出重定向到一个文件,但是我想捕获vim-airline仅在显示其标签线(顶部的行显示所有缓冲区名称已打开)之后创建的映射。因为它似乎可以这种异步方式,仅运行-c
重定向到文件并没有给它时间进行映射。可能有更好的方法,但这对我有用,尤其是因为我已经updatetime
设置为100
(0.1秒),这会影响CursorHold
事件触发的时间。默认情况下,vim将其设置为4秒。
vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"