Neovim 抛出错误 运行 input(),在 Vim 中运行正常

Neovim throws an error running input(), runs ok in Vim

菜鸟问题,当 运行 在命令行 window 中使用 input() 的脚本时,Neovim 抛出错误,而同一脚本在 [=26] 中运行=] 8.0。例如

print('Enter your name:')
myName = input()

:! python % <- 使用前命令

Nvim 输出:

myName: Traceback (most recent call last):
  File "x.py", line 2, in <module>
    myName = input()
EOFError: EOF when reading a line

shell returned 1

我更喜欢 neovim 在它自己的底部 window 运行脚本的方式,而不是 vim 输出到命令行,但我必须切换到 vim 对于任何使用 input() 的脚本。

是否有 nvim.init 设置或不同的命令我可以在这里成功使用,或者这是 neovim 中的已知缺陷?我在使用最新的 vim 和 nvim.

的 wsl

我不确定您为什么会收到此错误。但是,由于您使用的是 neovim,您是否尝试过使用 built-in terminal 模拟器?以下命令可用于 运行 newovim 中的程序在新的拆分 window:

:vsplit term://python3 %

python3是程序名,可以用其他程序代替。其中 % 是当前文件的路径。有关详细信息,请参阅 :h terminal-start

同样可以使用 Vim(8.0 或更高版本)通过使用命令来完成:

:term python3 %

这将再次为程序 运行ning 打开一个新的拆分。有关详细信息,请参阅 :h terminal

工作流的进一步优化是添加特定于文件类型的映射。在我们的例子中是 ~/.vim/after/ftplugin/python.vim

中的(类似 unix 的系统)
nnoremap <leader>r :vsplit term://python3 %<cr>