Lua跳转到正确的行

5

我有一个类似下面的makefile:

default:
  lua blah.lua

现在,在Vim中我键入“:make”。

我的Lua代码中有一个错误;它会显示文件名和行号。我希望Vim可以跳转到正确的文件/行。如何实现这一点?

1个回答

7

您可以设置错误格式字符串以识别Lua解释器的输出。例如,将以下内容添加到您的.vimrc文件中:

autocmd BufRead *.lua setlocal efm=%s:\ %f:%l:%m

假设您的Lua版本中出现以下错误:
lua: blah.lua:2: '=' expected near 'var'

小贴士:你可以使用makeprg设置而不是使用makefile:

autocmd BufRead *.lua setlocal makeprg=lua\ %

当您输入:make时,将运行当前文件通过lua。

好的。谢谢!我理解%f:%l这部分了。能否解释一下 "%.%#" 如何匹配 "lua"? - anon
1
%.%# 是错误格式中等价于正则表达式 .* 的表示。换句话说,它可以匹配任何内容(例如 "/usr/bin/lua")。这可能有些取巧,但能够完成工作! - richq
有没有办法让它显示“lua:”而不是“%.%#”?对我来说,这似乎更直观/更清晰,但我不知道如何在错误格式中表达它。 - anon
1
我已将%.%#更改为只使用%s,它匹配任何字符串(RTFM FTW!),但要仅针对lua进行硬编码,您可以使用autocmd BufRead *.lua setlocal efm=lua:\ %f:%l:%m - richq
@richq:使用%s而不是%。%#使vim搜索捕获的字符串(“lua”),而不是跳转到行号。 vimdoc说:““%s””转换指定要搜索以查找错误行的文本。”使用efm =%s:\%f:%m使这更明显,因为它在行号位置显示跳转文本。(如果未找到该搜索文本,则vim 8.0.596不会跳转到行号。) - idbrii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接