vim错误格式的超长文件名

vim错误格式的超长文件名,vim,latex,pdflatex,errorformat,Vim,Latex,Pdflatex,Errorformat,我一直在用vim的最新Xbox插件为LaTeX开发errorformat,我发现了一个我无法解决的问题 LaTeX生成相对结构化的日志文件,其中解析文件使用类似Lisp的paranthesis语法,例如: (/path/to/some/file.xxx ...) 首先,这看起来像一个简单的问题,我们可以使用%p/%O/%Q指令和%r和%f来解析文件名。对于简单的.tex文件和项目,这很有效。但是,在某些情况下,行可能在文件名完成之前中断。例如,我们可能会得到如下结果: ) (/some/fil

我一直在用vim的最新Xbox插件为LaTeX开发errorformat,我发现了一个我无法解决的问题

LaTeX生成相对结构化的日志文件,其中解析文件使用类似Lisp的paranthesis语法,例如:

(/path/to/some/file.xxx ...)
首先,这看起来像一个简单的问题,我们可以使用
%p/%O/%Q
指令和
%r
%f
来解析文件名。对于简单的
.tex
文件和项目,这很有效。但是,在某些情况下,行可能在文件名完成之前中断。例如,我们可能会得到如下结果:

) (/some/file/with/long/file/name.sty) (/some/file/with/even/longer/fi
le/name.sty (...
))
上面的大多数输出都可以正确解析,但是,如上所示,其中一条路径已断开,将无法解析。一个这样的错误就足以破坏文件堆栈,从而导致对日志文件的错误解析

这个问题可以用更一般的方式来描述:我想使用errorformat来解析跨行的文件名:

/path/to/some/
file.txt

我正在寻找解决这个问题的方法,或者使用更多的vim magic(也许我错过了一个不错的errorformat选项?),或者使用
latex
pdflatex
的一些选项。感谢任何解决方案。

我想我已经找到了一个很好的解决方案。显然,可以使用
max\u print\u line=
设置latex日志输出的包装。因此,如果发出latex命令:

max_print_line=2000 pdflatex <filename>.tex
max\u print\u line=2000 pdflatex.tex
跨行断开文件名的问题可能会得到解决,因为行在达到2000列之前不会断开

我首先找到了这个解决方案

因此,总而言之:如果使用
max\u print\u line
,我认为带有
%r
%f
来解析文件名的
%p/%O/%Q
指令应该可以工作


注意:这是最大打印线,而不是最大打印线。

我认为这在Vim内部是不可能处理的;TEX工具链不应该在输出的中间插入硬线中断;真奇怪@英戈卡卡特:这也是我的结论。我目前正在寻找一种方法,使Tex工具链生成更健全的日志文件……如果所有其他方法都失败,您可以将过滤器(例如,使用
sed
)附加到用于构建的
'makeprg'
。但这很难看,在Windows上有问题(不同的、劣质的工具),因此是最后的手段。@glts:这很烦人,因为latex日志文件的结构非常好。我认为断线是唯一导致问题的原因@英戈卡卡特:是的,我一直在考虑。问题在于制作一个好的
sed
脚本(或类似脚本)。它必须匹配断开的文件路径,并且只匹配实际路径。