为什么nvim + zsh + git log -p%不使用更少?

时间:2019-08-26 13:19:26

标签: zsh neovim less-unix

zsh开始执行以下命令将返回在less中打开的文件历史记录

git log -p file.txt

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

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

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

Vim可以正常工作,less

请,建议如何配置neovim进行修复。

1 个答案:

答案 0 :(得分:1)

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

有关详细信息,请参见Issue #1496上的讨论:

  

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

通过不将程序的标准输出附加到tty(并将其附加到管道),可以修改某些程序的行为。例如,git不会生成寻呼机,通常不会在其输出中使用颜色,等等。

建议的解决方法是:

  
      
  • 从外壳(从另一个终端或使用ctrl + z)调用它
  •   
  • 使用逃犯git插件
  •   

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

:terminal git log -p %

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