【问题标题】:Why nvim + zsh + git log -p % does not use less?为什么 nvim + zsh + git log -p % 不用少?
【发布时间】:2019-12-30 16:38:36
【问题描述】:

来自zsh 的以下命令返回在less 中打开的文件历史记录

git log -p file.txt

如果我从 neovim nvim 运行相同的命令:

nvim -u NONE -N file.txt 
git log -p %

它返回整个历史记录而不运行less

Vim 按预期工作,less

请告知如何配置 neovim 来修复它。

【问题讨论】:

  • 另外,全局 git log -p 颜色高亮不起作用

标签: zsh neovim less-unix


【解决方案1】:

在 Neovim 中,:!(砰)和system() 不是交互式的,这是设计使然。

详见Issue #1496的讨论:

这不是错误,它是 bang 命令的新行为:我们不再使用连接到 Nvim tty 的 stdout 来生成程序,而是打开管道,读取输出并显示给用户。这是 bang 命令在 UI 之间保持一致的唯一方法,因此设计为从终端交互使用的程序将不再在 nvim 内部运行。

通过不将程序的标准输出附加到 tty(而是将其附加到管道),可能会修改某些程序的行为。例如,git 不会生成分页器,通常不会在其输出中使用颜色等。

建议的解决方法是:

  • 从 shell 调用它(从不同的终端或使用 ctrl+z)
  • 使用逃犯 git 插件

另一种选择是使用 Neovim 的:terminal

:terminal git log -p %

这是一个全功能终端 (tty),因此它将启用终端激活的所有副作用,例如生成 less 作为寻呼机。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2015-08-26
    • 2014-10-09
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多