【问题标题】:vimdiff immediately becomes stopped job, crashes terminal when I try to fg it, but works with GUIvimdiff 立即停止工作,当我尝试 fg 时使终端崩溃,但适用于 GUI
【发布时间】:2014-10-03 17:24:49
【问题描述】:

已解决:问题出在我的 .vimrc 中的这一行:

set shell=/bin/bash\ -li

更新:看来问题是由于我的 .vimrc(将 .vimrc 重命名为“隐藏”它解决了问题),所以它可能与 Mint 无关。

我正在运行 Linux Mint 17 Cinnamon。当我在终端中运行 vim -d file otherversion 时,我得到一个空白屏幕,显示

"otherversion" 18L, 218C
[1]+  Stopped                 vim -d file otherversion
user@machine:~/path/to/directory$ ;2R

如果我执行fg 1,那么终端窗口就会关闭。此外,虽然我可以打字,但没有闪烁的光标。与vimdiff 相同,而不是vim -d。我尝试了多种 vim 发行版,有些包含 GUI,有些不包含。

但是,对于包含 GUI 的版本,如果我运行 vim -d -g file otherversion,它会按预期工作。

我宁愿不依赖 gvim 来使用 vimdiff。

有什么建议吗?

谢谢

【问题讨论】:

  • 你的TERM变量和shell是什么?
  • 期限是'xterm'。它是一个 bash shell,启动它的命令是 gnome-terminal。另外,请参阅主帖中的更新。
  • 我猜这更可能是 shell 的问题,而不是 vim 的问题。 vim 是否正常打开(尝试写入整个屏幕的其他程序是否正常工作,例如 less 或 man)。 vim 被发送 SIGTTOU 默认停止它。虽然 bash 不应该有这个问题。 (顺便说一句,vimdiff 通常只是一个指向不同名称的 vim 的符号链接)
  • 是的,其他一切正常。 Vim,更少,男人,顶级,纳米。以 vim -d 而不是 vimdiff 开头会导致相同的行为。
  • 这个地方不是论坛,请接受您自己的答案并删除您问题的“已解决”部分。

标签: linux vim linux-mint vimdiff


【解决方案1】:

如果您需要交互式 bash shell(例如获取 bash 别名),请在 .vimrc 中使用此代码,而不是删除该选项:

if &diff == 'nodiff'
    set shellcmdflag=-ic
endif

这只会在不运行 vimdiff 时启用交互式 bash shell,这样在运行 vim 时您将拥有 bash 别名。

【讨论】:

  • 像魅力一样工作,谢谢!但是,这仍然不能防止 vim 在使用 :diffthis 命令区分文件 inside vim 后崩溃或进入后台。如何补救?
【解决方案2】:

从我的 .vimrc 中删除以下行后,问题就消失了:

set shell=/bin/bash\ -li

【讨论】:

    【解决方案3】:

    感谢@FDinoff 的评论,我的同样问题得到了解决。

    问题是我的 ~/.cshrc 中的“bash”命令。

    为了避免每次登录后都进入 bash,我已经这样做了。在我以前打开 vimdiff 时开始出现此问题之前,它工作正常。

    删除 ~/.vimrc 也没有帮助我。然后我阅读了 Fdinoff 的评论。在那里,他建议它可能与shell有关,如果“less”和“man”也停止工作。我在我的案例中观察到了同样的问题,这帮助我排除了 .vimrc 中的损坏。

    从我的 ~/.cshrc 中删除“bash”后,问题就完全消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2021-12-02
      相关资源
      最近更新 更多