为什么nvim + zsh + git log -p % 不使用less?
Why nvim + zsh + git log -p % does not use less?
来自 zsh
returns 文件历史记录的以下命令在 less
中打开
git log -p file.txt
如果我 运行 来自 neovim 的相同命令 nvim
:
nvim -u NONE -N file.txt
git log -p %
它returns整个历史都没有运行宁less
。
Vim 按预期工作,less
。
请告知如何配置 neovim 来修复它。
在 Neovim 中,:!
(bang) 和 system()
不是交互式的,这是设计使然。
详情见Issue #1496的讨论:
This is not a bug, it is the new behavior of bang commands: We no longer spawn the program with it's stdout connected to Nvim tty, instead we open a pipe, read output and display to the user. This is the only way the bang commands will be consistent across UIs, so programs designed to be used interactively from the terminal will no longer work from inside nvim.
通过不将程序的标准输出附加到 tty(而是将其附加到管道),某些程序的行为可能会被修改。例如,git 不会生成寻呼机,通常不会在其输出中使用颜色等。
建议的解决方法是:
- Invoke it from a shell(either from a different terminal or with ctrl+z)
- Use the fugitive git plugin
另一种选择是使用 Neovim 的 :terminal
:
:terminal git log -p %
这是一个全功能终端 (tty),因此它将启用终端激活的所有副作用,例如生成 less
作为寻呼机。
来自 zsh
returns 文件历史记录的以下命令在 less
git log -p file.txt
如果我 运行 来自 neovim 的相同命令 nvim
:
nvim -u NONE -N file.txt
git log -p %
它returns整个历史都没有运行宁less
。
Vim 按预期工作,less
。
请告知如何配置 neovim 来修复它。
在 Neovim 中,:!
(bang) 和 system()
不是交互式的,这是设计使然。
详情见Issue #1496的讨论:
This is not a bug, it is the new behavior of bang commands: We no longer spawn the program with it's stdout connected to Nvim tty, instead we open a pipe, read output and display to the user. This is the only way the bang commands will be consistent across UIs, so programs designed to be used interactively from the terminal will no longer work from inside nvim.
通过不将程序的标准输出附加到 tty(而是将其附加到管道),某些程序的行为可能会被修改。例如,git 不会生成寻呼机,通常不会在其输出中使用颜色等。
建议的解决方法是:
- Invoke it from a shell(either from a different terminal or with ctrl+z)
- Use the fugitive git plugin
另一种选择是使用 Neovim 的 :terminal
:
:terminal git log -p %
这是一个全功能终端 (tty),因此它将启用终端激活的所有副作用,例如生成 less
作为寻呼机。