VIM 脚本 - 构建当前/主文件



我正在使用 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 行。

假设mainfile已在全局范围内设置(见:h global-variable(,类似于以下函数的东西应该可以解决问题:

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

execute命令(见:h :execute(组装一个字符串并将其解释为另一个命令。

我们使用条件表达式(见:h expr1(而不是if(见:h if(。

我们可以像这样调用函数:

:call LuaExecMainOrCurrent()

最新更新