vim scripting - создать текущий / основной файл - PullRequest
0 голосов
/ 04 июня 2018

Я использую vim для редактирования скриптов lua (хотя это связано с vim и не имеет ничего общего с lua).В настоящее время я сопоставил

:map <F1> :w^M:!lua %^M

, чтобы я мог нажать F1 в текущем файле, чтобы выполнить его и увидеть любые результаты, прежде чем снова нажать ENTER, чтобы вернуться к редактированию.

Иногда,Я работаю с проектом с несколькими различными файлами, где один является основным файлом, поэтому я хотел бы реализовать следующее:

  • При нажатии <Control-F1> сохраняется имя текущего файла (%)в переменную, назовем ее mainfile.
  • Если установлено mainfile, то <F1> выполняет :w^M:!lua ${mainfile}^M, в противном случае выполняется текущий файл (как указано выше).

Я уже довольно давно использовал vim, но не его функцию сценариев - например, :let mainfile = %, кажется, не работает (недопустимое выражение).

Есть ли простой способ сделать это?У меня есть чувство, если это возможно, это будет что-то вроде 3 строки.

1 Ответ

0 голосов
/ 05 июня 2018

Предполагая, что mainfile установлено в глобальной области видимости (см. :h global-variable), что-то вроде следующей функции должно помочь:

function! LuaExecMainOrCurrent ()
    execute ":w" expand("%")
    execute ":!lua" exists("g:mainfile") ? g:mainfile : expand("%")
endfunction

Команда execute(см. :h :execute) собирает строку и интерпретирует ее как другую команду.

Мы используем условное выражение (см. :h expr1) вместо , если (см. :h if).

Мы можем вызвать функцию следующим образом:

:call LuaExecMainOrCurrent()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...