Как запустить файл, который я редактирую в Vi (m), и получить вывод в разделенном окне (как в SciTE)?
Конечно, я мог бы выполнить это так:
:!scriptname
Но можно ли избежать написания имени скрипта и как получить вывод в разделенном окне, а не только в нижней части экрана?
:!"%:p"
справиться с пробелами.Ответы:
Есть
make
команда. Он запускает команду, указанную вmakeprg
опции. Используйте%
в качестве заполнителя для текущего имени файла. Например, если вы редактировали скрипт на Python:Да, вам нужно сбежать из космоса. После этого вы можете просто запустить:
При желании вы можете установить эту
autowrite
опцию, и она будет автоматически сохранена перед запускомmakeprg
:Это решает часть выполнения. Не знаю, как вывести этот вывод в разделенное окно без перенаправления в файл.
источник
:copen
для открытия «списка ошибок», созданного при запуске. В:make
собственном окне. К сожалению, для правильного форматирования вывода необходимо некоторое уточнение этойerrorformat
опции. В противном случае предполагается, что вывод имеет формат, который выводит gcc.:let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
) хотя и выглядит загадочным, но работает точно так, как задано автором вопроса.Чтобы получить доступ к имени файла текущего буфера, используйте
%
. Чтобы получить его в переменной, вы можете использоватьexpand()
функцию. Чтобы открыть новое окно с новым буфером, используйте:new
или:vnew
. Чтобы передать вывод команды в текущий буфер, используйте:.!
. Собираем все вместе:очевидно, заменяя
ruby
любую команду, которую вы хотите. Я использовал,execute
чтобы заключить имя файла в кавычки, чтобы он работал, если в имени файла есть пробелы.источник
:command! R let f=expand("%")|vnew|execute '.!ruby "' . f . '"'
чтобы иметь возможность просто использовать его:R
для выполнения своей командыВ Vim есть
!
команда ("bang"), которая выполняет команду оболочки непосредственно из окна VIM. Более того, он позволяет запускать последовательность команд, связанных с конвейером и считывать stdout.Например:
эквивалентно открытию окна командной строки и запуску команд:
См. "Советы по Vim: Работа с внешними командами" для подробностей.
источник
У меня для этого есть ярлык в моем vimrc:
Это записывает текущий буфер, делает текущий файл исполняемым (только unix), выполняет его (только unix) и перенаправляет вывод в .tmp.xyz, затем создает новую вкладку, считывает файл и затем удаляет его.
Разбивая это:
источник
:w<CR>:silent !chmod +x %:p<CR>:silent !%:p 2>&1 | tee ~/.vim/output<CR>:split ~/.vim/output<CR>:redraw!<CR>
- это перенаправляет и stdout, и stderr во временный файл, и перед этим он печатает все в stdout, поэтому, если скрипт долго запускается, вы действительно видите, что он работает. Кроме того, он не зависит от каталога (я получал ошибки при открытии файлов по их абсолютному пути). Однако он не запускает скрипты в интерактивном режиме, и я не нашел способа сделать это так.Для сценария Shell я использовал
источник
Vim 8 имеет встроенный интерактивный терминал. Чтобы запустить текущий сценарий bash на разделенной панели:
или для краткости
%
расширяется до текущего имени файла.Откуда
:help terminal
:источник
Я использую немного более навязчивый механизм через карты:
Просто сделай так, чтобы мне не пришлось экономить, и уходи. Просто иди.
источник
Вы можете использовать плагин vim bexec . Насколько мне известно, последняя версия - 0.5.
Затем:
Внутри самого vim при редактировании файла .vba выполните:
Появится некоторый вывод, сообщающий вам, что был написан bexec.vim , а также документация и т. Д.
Теперь вы можете протестировать его, открыв свой (любой языковой скрипт, у которого есть интерпретатор #!, Работающий правильно) в vim и запустите
Примечание: я хотел, чтобы разделение было вертикальным, а не горизонтальным, поэтому я сделал:
и изменил значение с "hor" на "ver" ..
Я знаю, что это старый вопрос, но я надеюсь, что это поможет кому-то там. Я столкнулся с той же проблемой, когда проходил курс «Разработка стартапов» на Coursera, где профессор Паладжи использует Emacs, а мне не нравится Emacs ..
источник
Основываясь на ответах @SethKriticos и @Cyril, я теперь использую следующее:
Используйте F9, чтобы настроить новое окно, и F2, чтобы выполнить ваш сценарий и перейти к выходному файлу.
Я также добавил имя сценария к имени выходного файла, чтобы вы могли использовать его для нескольких сценариев одновременно.
источник
В вашем
.vimrc
вы можете вставить эту функциюПосле этого в качестве примера
vim
выполните команду запуска:shell python ~/p.py
. И вы получите вывод в разделенном окне. + После внесения изменений вp.py
качестве примера вы снова выполните ту же команду, эта функция не создаст новое окно снова, она отобразит результат в предыдущем (том же) разделенном окне.источник
@xorpaul
Я довольно долго искал этот скрипт (python / Windows). Поскольку в Windows нет "тройника", я изменил его на:
источник
Просто используйте двоеточие и восклицательный знак, как показано ниже.
источник
Я бы рекомендовал плагин quickrun . Настроить быстро и просто. Вот небольшая демонстрация:
источник