Рассмотрим любой интерпретируемый язык программирования.
Я могу запустить текущий открытый скрипт с помощью ! interpreter %
и использовать клавишу Return, чтобы вернуться в vim после завершения выполнения.
Можно ли как-то не заменять текущее окно выводом выполненной команды оболочки, а вместо этого открыть вывод в новой разделенной панели? Я хотел бы по-прежнему видеть свой исходный код во время выполнения моего скрипта.
Я попробовал :split ! interpreter %
, но не получилось.
Есть ли способ? Я использую vim 7.3.
решение1
При использовании :!
внешней команды она выполняется в оболочке, а мгновенный вывод не сохраняется внутри Vim; вы просто видите, что выводится на терминал, а затем управление возвращается Vim после завершения внешней команды.
Чтобы сохранить вывод, вам придется считать его в Vimбуфер. Для этого есть команда :read!
. Чтобы открыть новыйцарапатьбуфер, объедините это с :new
:
:new | 0read ! <command>
Если вы хотите передать имя файла текущего буфера ( %
) внешней команде, вам необходимо использовать :execute
, чтобы оно уже было оценено в текущем буфере:
:execute 'new | 0read ! interpreter' expand('%')
Или вы используете тот факт, что с новым буфером предыдущий становитсяальтернативныйодин, и используйте #
вместо %
:
:new | 0read ! interpreter #
Избавьтесь от буфера с помощью :bdelete!
.
Если вы хотите видеть вывод асинхронно во время его выполнения, вам понадобится внешний мультиплексор или плагин, как указано в ответе @chaos.
решение2
Насколько я знаю, в vim
. Но используйте для этого терминальный мультиплексор, например screen
. Перед тем, как открыть vim, запустите мультиплексор:
screen
Затем нажмите ctrl- a Sдля горизонтального и ctrl- a |для вертикального разделения экрана.
Теперь откройте файл в vim
одном из разделенных экранов. И перейдите на другой экран с помощью ctrl- a tab. Обратите внимание, что на втором экране вам сначала нужно открыть новый экран ( ctrl- a c), прежде чем вы сможете его использовать.
На экране с vim вы можете редактировать файл, а на другом экране вы можете выполнить его и постоянно видеть сообщения и код.
Здеськраткая справкадля screen
.