当我 运行 嵌入 shell 时,为什么 Neovim 不允许我 运行 嵌入 IPython?
Why does Neovim not allow me to run an IPython embed when I run it in a shell?
在我的 init.vim for Neovim 中,我的行与 Vim 中的 .vimrc 中的行相同,当按 F12 时,运行s 当前在缓冲区中的文件,使用 python3 解释器:
autocmd FileType python nnoremap <silent> <F12> :!clear;python3 %<CR>
现在我正在尝试 运行 这个小的“test.py”脚本,方法是在正常模式下按 F12:
import IPython
IPython.embed()
在 Vim 中工作正常:
但在 neovim 中不起作用,尽管在我的 ~/config/nvim/init.vim:
中完全相同
确实如此 运行 IPython,但随后立即(红色箭头)莫名其妙地询问我是否要退出。它还插入了一堆奇怪的转义序列(黄色箭头),我怀疑这是它想要退出的原因,并且不会出现在正常 vim.
中
我不太喜欢内部的 neovim 终端,那么在这种情况下如何让 neovim 的行为与 vim 完全一样?
这是 Neo 的一个已知限制Vim,:!
是非交互式的,它不会分配伪终端,这通常是全屏应用程序所需要的,例如 [=29] =] 到 运行 正确。
详情见issue #1496。
另一种方法是使用 NeoVim(或 Vim 8)对终端的支持,使用 :terminal
命令,或使用诸如 aa termopen()
(在 NeoVim 中)或 term_start()
(在 Vim 8 中)到 运行 全屏应用程序,例如 IPython.
在您的情况下,像 :term python3 %
、运行 拆分终端中的命令这样简单的东西可能就足够了。
您可能还会发现 vim-bang-terminal 插件很有趣。它将 :!
命令替换为 Vim/NeoVim 终端内 运行 类似的命令调用。
在我的 init.vim for Neovim 中,我的行与 Vim 中的 .vimrc 中的行相同,当按 F12 时,运行s 当前在缓冲区中的文件,使用 python3 解释器:
autocmd FileType python nnoremap <silent> <F12> :!clear;python3 %<CR>
现在我正在尝试 运行 这个小的“test.py”脚本,方法是在正常模式下按 F12:
import IPython
IPython.embed()
在 Vim 中工作正常:
但在 neovim 中不起作用,尽管在我的 ~/config/nvim/init.vim:
中完全相同确实如此 运行 IPython,但随后立即(红色箭头)莫名其妙地询问我是否要退出。它还插入了一堆奇怪的转义序列(黄色箭头),我怀疑这是它想要退出的原因,并且不会出现在正常 vim.
中我不太喜欢内部的 neovim 终端,那么在这种情况下如何让 neovim 的行为与 vim 完全一样?
这是 Neo 的一个已知限制Vim,:!
是非交互式的,它不会分配伪终端,这通常是全屏应用程序所需要的,例如 [=29] =] 到 运行 正确。
详情见issue #1496。
另一种方法是使用 NeoVim(或 Vim 8)对终端的支持,使用 :terminal
命令,或使用诸如 aa termopen()
(在 NeoVim 中)或 term_start()
(在 Vim 8 中)到 运行 全屏应用程序,例如 IPython.
在您的情况下,像 :term python3 %
、运行 拆分终端中的命令这样简单的东西可能就足够了。
您可能还会发现 vim-bang-terminal 插件很有趣。它将 :!
命令替换为 Vim/NeoVim 终端内 运行 类似的命令调用。