Vim

Vim 重新縮進文件,硬編碼一些縮進

  • May 1, 2020

我在使用 vim reindent 文件(帶有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}不會向左移動兩個縮進(這是正確的),而是僅移動一個縮進:/

這樣做的問題是這會弄亂下面所有行的整個縮進。

我最喜歡的解決方案是,是否會有類似%stopzoneLaTeX 的註釋來表示語法突出顯示以停止目前(數學)區域。

也許類似於%indent -1將行向左縮進一個。

有誰知道你將如何實現這樣的東西,或者更好的是,這樣的東西已經存在?

還是有其他工具可以比 Vim 做得更好?對我來說,從 Vim 獲得近似縮進並使用外部終端實用程序使縮進真正正確就足夠了?

掃描以找到相應縮進的行數\begin{...}是有限的,但它可以由(不幸的是未記錄的)全域變數控制g:tex_max_scan_line,預設為 60。

請參閱 Vim 執行時附帶的變數定義indent/tex.vim

對於您自己的 LaTeX 文件,您可以將其增加到更合理的值。例如,將其添加到您的 vimrc 文件中:

let g:tex_max_scan_line = 400

這會將限制增加到 400 行,根據您的文章,這應該足夠了。此更改會對您的性能造成很小的影響,但我希望它應該是可以接受的。

引用自:https://unix.stackexchange.com/questions/583668