为什么Neovim在外壳程序中运行时不允许我运行IPython嵌入程序?

问题描述 投票:1回答:1

在我用于Neovim的init.vim中,与在Vim中的.vimrc中的行相同,当按F12键时,它使用python3解释器运行当前在缓冲区中的文件:

autocmd FileType python nnoremap <silent> <F12> :!clear;python3 %<CR>

现在,我试图通过在正常模式下按F12来运行这个小的“ test.py”脚本:

import IPython
IPython.embed()

在Vim中效果很好:

enter image description here

但是尽管我的〜/ config / nvim / init.vim中的代码完全相同,但在neovim中不起作用:

enter image description here

因此它确实运行IPython,但是随后(红色箭头)莫名其妙地询问我是否要退出。我还插入了一堆奇怪的转义序列(黄色箭头),我怀疑这是它要退出的原因,并且在正常的vim中不会出现。

我不太喜欢内部neovim终端,所以在这种情况下,如何使Neovim表现得完全像vim一样?

vim neovim
1个回答
0
投票

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

有关详细信息,请参见issue #1496

[一种替代方法是使用:terminal命令,或使用诸如termopen()(在NeoVim中)或term_start()(在Vim 8中)之类的功能,对终端使用NeoVim(或Vim 8)的支持,以完全运行-屏幕应用程序,例如IPython。

您可能还会发现vim-bang-terminal插件很有趣。它将:!命令替换为在Vim / NeoVim终端中运行的类似命令调用。

© www.soinside.com 2019 - 2024. All rights reserved.