Почему Neovim не позволяет мне запускать встраивание I Python, когда я запускаю его в оболочке? - PullRequest
1 голос
/ 26 апреля 2020

В моем init.vim для Neovim у меня та же строка, что и в моем .vimr c в Vim, который при нажатии F12 запускает файл, находящийся в буфере в данный момент, используя интерпретатор python3:

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

Теперь я пытаюсь запустить этот крошечный скрипт "test.py", нажимая F12 в обычном режиме:

import IPython
IPython.embed()

Прекрасно работает в Vim:

enter image description here

Но в neovim не работает, несмотря на точно такую ​​же строку в моем ~ / config / nvim / init.vim:

enter image description here

Таким образом, он запускает I Python, но затем немедленно (красная стрелка) необъяснимым образом спрашивает, хочу ли я выйти. В него также вставлено несколько странных escape-последовательностей (желтая стрелка), которые, как я подозреваю, являются причиной его выхода, и которые не отображаются с обычным vim.

Мне не очень нравится внутренний терминал neovim, так как я могу заставить neovim вести себя точно так же, как vim в этом случае?

1 Ответ

1 голос
/ 27 апреля 2020

Это известное ограничение NeoVim, :! не является интерактивным и не выделяет псевдо-терминал, который обычно требуется для полноэкранных приложений, таких как I Python, для правильной работы.

Подробнее см. , выпуск # 1496 .

Альтернативой является использование поддержки NeoVim (или Vim 8) для терминала с помощью команды :terminal или с такой функцией, как aa termopen() (в NeoVim) или term_start() (в Vim 8) для запуска полноэкранных приложений, таких как I Python.

В вашем случае, что-то простое, например :term python3 %, при выполнении команды в терминал в сплите, может быть адекватной заменой.

Вам также может быть интересен плагин vim-bang-terminal . Он заменяет команду :! аналогичным вызовом команды, который выполняется внутри терминала Vim / NeoVim.

...