每隔一段时间我在命令行中犯了一个错误,然后在子壳中使用vim。
这当然会锁定该终端窗口,并输出一堆错误,主要错误为
Vim: Warning: Output not to a terminal
有没有办法配置VIM,因此它会在发生这种情况时自动死亡,并且不会悬挂我的终端?
我知道我可能可以弄清此VIM实例的过程ID,然后杀死它,但是如果可能的话,我希望一个更好的解决方案,因为我倾向于在不同的Tmux Panes/Windows中运行许多不同的VIM实例。谢谢!
不知道执行此操作的任何配置选项,但是如果您输入:q<Enter>
,则会退出VIM。
另外,尽管Ctrl-C无法正常工作,但Ctrl-Z会将VIM放置在后台,然后您可以使用kill %1
杀死它。
或vim短切割
ZQ
大写字母。您可以在普通模式下使用它: - )
您可以轻松地防止它在首先开始。考虑将以下函数定义放在您的.bashrc
:
vim() {
[ -t 1 ] || { echo "Not starting vim without stdout to TTY!" >&2; return 1; }
command vim "$@"
}
通过确保它调用外部命令(而不是再次调用函数),command
内置了递归。
同样,您可以创建一个脚本$HOME/bin/vim
:
#!/bin/sh
if [ -t 1 ]; then
exec /usr/bin/vim "$@"
else
echo "Not starting vim without stdout to TTY!" >&2
exit 1
fi
...在您的PATH
中首先放置$HOME/bin
,让该垫片在不依赖外壳功能的情况下完成工作。
您可以只输入此并点击输入,即使它没有在Stdout中显示,它仍在输入:
-
键入下面:Q!
-
执行键盘键返回/输入
如果以上任何一个不起作用,请尝试使用以下内容:按esc
一次,然后使用
:qa
或
SHIFT ZZ