每隔一段时间我就会在命令行中犯一个错误,并在子shell中使用vim。
这当然会锁定该终端窗口,并输出一堆错误,主要错误为
Vim: Warning: Output not to a terminal
有没有办法让我配置vim,以便在发生这种情况时自动死机,并且不会挂起我的终端?
我知道我可能会弄清楚这个vim实例的进程ID并将其删除,但是如果可能的话我想要一个更好的解决方案,因为我倾向于在不同的tmux窗格/窗口中运行许多不同的vim实例。谢谢!
答案 0 :(得分:15)
不知道执行此操作的任何配置选项,但如果您键入:q<Enter>
,则会发生这种情况,它将退出vim。
此外,虽然Ctrl-C不起作用,但Ctrl-Z会将vim放入后台,然后您可以使用kill %1
将其终止。
答案 1 :(得分:13)
你可以很容易地防止它首先开始。考虑在.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
...将$HOME/bin
放在PATH
的第一位,让该垫片完成工作而不依赖shell函数。
答案 2 :(得分:11)
或者是vim捷径
ZQ
大写字母。您可以在正常模式下使用它: - )
答案 3 :(得分:6)
您可以直接输入并按Enter键,即使它仍未显示在标准输出中也是如此:
键入以下内容 :q!
执行键盘键 返回/输入