Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Neovim不允许我在shell中运行IPython embed?_Vim_Neovim - Fatal编程技术网

为什么Neovim不允许我在shell中运行IPython embed?

为什么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中有完全相同的行:

在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中有完全相同的行:

所以它确实运行IPython,但随后立即(红色箭头)莫名其妙地询问我是否要退出。它还插入了一系列奇怪的逃逸序列(黄色箭头),我怀疑这就是它想要退出的原因,而正常的vim不会出现这些序列


我真的不喜欢内部neovim终端,那么在这种情况下,如何让neovim的行为与vim完全一样?

这是neovim的一个已知限制,
是非交互式的,它不会分配一个伪终端,这通常是IPython等全屏应用程序正常运行所必需的

有关详细信息,请参阅

另一种方法是使用NeoVim(或Vim 8)对终端的支持,使用
:terminal
命令,或使用aa
termopen()
(在NeoVim中)或
term_start()
(在Vim 8中)等功能来运行IPython等全屏应用程序

在您的情况下,像
:term python3%
这样简单的东西,在拆分的终端中运行命令,可能是一个合适的替代品


您可能还会发现这个插件很有趣。它取代了一个
命令与在Vim/NeoVim终端中运行的类似命令调用相反。

事实上,我发现运行
:term python3%
现在对我来说效果很好,所以没有我想象的那么糟糕。@ThomasBrowne感谢您的反馈!我把那个直接的建议纳入了答案中。事实上,虽然与
不完全相同:命令,它是一个很好的直接替代品。