Bash:"Vim: Warning: Output not to a terminal"时杀死 Vim



每隔一段时间我在命令行中犯了一个错误,然后在子壳中使用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中显示,它仍在输入:

  1. 键入下面:Q!

  2. 执行键盘键返回/输入

如果以上任何一个不起作用,请尝试使用以下内容:按esc一次,然后使用

:qa

SHIFT ZZ

最新更新