我在使用 vim 重新缩进文件时遇到一些困难(带有gg=G
)。
当我有一个较大的文件(不是那么大,可能少于 400 行代码)时,我认为 Vim 无法正确缩进一些行,因为之后行的缩进所依赖的行是上面的很多行(我假设所以,因为我尝试使用较小的块,然后缩进正确完成)。
例子:
\begin{itemize}
\begin{minipage} %indent +2 (after \begin{itemize})
\item %indent +1 (after \begin{minipage}) but -1 because it's \item
%some lines %indent +1
\end{minipage} %indent -1
\end{itemize} %indent -2 <--- here is the Problem, because here has to be -double indent
现在,如果在这种情况下,处的行%some lines
有很多行,那么\end{itemize}
不会向左移动两个缩进(这是正确的),而是仅移动一个缩进:/
问题是这会扰乱下面所有行的整个缩进。
我最想要的解决方案是,是否有类似%stopzone
LaTeX 注释的内容来指示语法突出显示以停止当前(数学)区域。
也许类似于%indent -1
将行向左移动一个缩进。
有谁知道如何实现这样的东西,或者更好的是,这样的东西已经存在?
或者有其他工具可以比 Vim 更好地完成这种缩进吗?对我来说,从 Vim 获得近似缩进并使用外部终端实用程序使缩进真正正确就足够了吗?
答案1
扫描以查找相应缩进的行数\begin{...}
是有限的,但它可以由(不幸的是未记录的)全局变量控制g:tex_max_scan_line
,默认为 60。
请参阅变量定义随indent/tex.vim
Vim 运行时一起提供。
您可以将其增加到更适合您自己的 LaTeX 文档的值。例如,将其添加到您的 vimrc 文件中:
let g:tex_max_scan_line = 400
这会将限制增加到 400 行,根据您的帖子,这应该足够了。此更改将对您的性能造成轻微影响,但我预计它应该是可以接受的。