在我用于Neovim的init.vim中,与在Vim中的.vimrc中的行相同,当按F12键时,它使用python3解释器运行当前在缓冲区中的文件:
autocmd FileType python nnoremap <silent> <F12> :!clear;python3 %<CR>
现在,我试图通过在正常模式下按F12来运行这个小的“ test.py”脚本:
import IPython
IPython.embed()
在Vim中效果很好:
但是尽管我的〜/ config / nvim / init.vim中的代码完全相同,但在neovim中不起作用:
因此它确实运行IPython,但是随后(红色箭头)莫名其妙地询问我是否要退出。我还插入了一堆奇怪的转义序列(黄色箭头),我怀疑这是它要退出的原因,并且在正常的vim中不会出现。
我不太喜欢内部neovim终端,所以在这种情况下,如何使Neovim表现得完全像vim一样?
这是NeoVim的已知限制,:!
是非交互式的,它不会分配伪终端,而伪终端通常是IPython等全屏应用程序正常运行所必需的。
有关详细信息,请参见issue #1496。
[一种替代方法是使用:terminal
命令,或使用诸如termopen()
(在NeoVim中)或term_start()
(在Vim 8中)之类的功能,对终端使用NeoVim(或Vim 8)的支持,以完全运行-屏幕应用程序,例如IPython。
您可能还会发现vim-bang-terminal插件很有趣。它将:!
命令替换为在Vim / NeoVim终端中运行的类似命令调用。