Vim - выполнение внешней команды, привязанной к F5, вставляет результат в источник - PullRequest
1 голос
/ 04 января 2012

В настоящее время я разрабатываю веб-приложение, которое нуждается в фазе «компиляции» для тестирования. Для этого у меня есть простой сценарий оболочки, который предназначен для запуска из точного каталога.

Итак, в Vim, когда я вхожу в командный режим и выдаю это, он работает:

:lcd /my/script/directory
:!./build debug

Мой скрипт сборки записывает несколько журналов в командном окне, все в порядке, и говорит мне, чтобы я нажал return, чтобы вернуться к редактированию моих материалов. Хорошо.

Теперь я бы хотел связать это с F5, чтобы ускорить процесс. В моем ~/.vimrc я добавил это:

map <F5> :lcd /my/script/directory<CR>! ./build debug<CR>

Но после ввода моего ~/.vimrc, когда я нажимаю F5, мой скрипт запускается правильно ... но странным образом Vim заменяет текущую строку, в которой я нахожусь, выводом скрипта. То же самое, если я делаю map <silent> <F5> …

Если я заменим ./build debug на простой ls, проблема тоже возникнет. Вывод ls вставляется в мой текущий документ, перезаписывая текущую строку.

Кто-нибудь знает, откуда возникла проблема? Мне действительно нужно увидеть выходные данные моего сценария build, поэтому я не могу просто добавить команду «отменить» после привязки, которая просто стерла бы вставленный вывод моей команды.

FWIW, я использую снимок MacVim 63 на OSX 10.7.2, но это также происходит, когда я использую простую старую командную строку vim (v7.3) из iTerm2 (1.0.0.20111020).

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Попробуйте

map <silent> <F5> :lcd /my/script/directory \| !./build debug<CR>

Выходящий канал здесь для цепочки команд.

0 голосов
/ 04 января 2012

Используйте двоеточие перед !, например:

map <F5> :lcd /my/script/directory<CR>:! ./build debug<CR>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...