为什么Neovim不允许我在shell中运行IPython embed?
在Neovim的init.vim中,我的行与vim中的my.vimrc中的行相同,当按下F12时,它使用python3解释器运行缓冲区中当前的文件:为什么Neovim不允许我在shell中运行IPython embed?,vim,neovim,Vim,Neovim,在Neovim的init.vim中,我的行与vim中的my.vimrc中的行相同,当按下F12时,它使用python3解释器运行缓冲区中当前的文件: autocmd文件类型python nnoremap:!清楚的python3% 现在,我正试图通过在正常模式下按F12来运行这个微小的“test.py”脚本: import IPython IPython.embed() 在Vim中工作良好: 但在neovim中不起作用,尽管在my~/config/nvim/init.vim中有完全相同的行:
autocmd文件类型python nnoremap:!清楚的python3%
现在,我正试图通过在正常模式下按F12来运行这个微小的“test.py”脚本:
import IPython
IPython.embed()
在Vim中工作良好:
但在neovim中不起作用,尽管在my~/config/nvim/init.vim中有完全相同的行:
所以它确实运行IPython,但随后立即(红色箭头)莫名其妙地询问我是否要退出。它还插入了一系列奇怪的逃逸序列(黄色箭头),我怀疑这就是它想要退出的原因,而正常的vim不会出现这些序列
我真的不喜欢内部neovim终端,那么在这种情况下,如何让neovim的行为与vim完全一样?这是neovim的一个已知限制,
:
是非交互式的,它不会分配一个伪终端,这通常是IPython等全屏应用程序正常运行所必需的
有关详细信息,请参阅
另一种方法是使用NeoVim(或Vim 8)对终端的支持,使用:terminal
命令,或使用aatermopen()
(在NeoVim中)或term_start()
(在Vim 8中)等功能来运行IPython等全屏应用程序
在您的情况下,像:term python3%
这样简单的东西,在拆分的终端中运行命令,可能是一个合适的替代品
您可能还会发现这个插件很有趣。它取代了一个
:代码>命令与在Vim/NeoVim终端中运行的类似命令调用相反。事实上,我发现运行:term python3%
现在对我来说效果很好,所以没有我想象的那么糟糕。@ThomasBrowne感谢您的反馈!我把那个直接的建议纳入了答案中。事实上,虽然与不完全相同:代码>命令,它是一个很好的直接替代品。