好吧,我正在编辑一个LaTeX文件,但我对默认的vim缩进不满意。
假设我想让vim做这样的缩进:
\begin{document}
\maketitle
\section{A}
\begin{itemize}
\item 1
\end{itemize}
\section{B}
\begin{itemize}
\item 1
\end{itemize}
\section{C}
\begin{itemize}
\item 1
\item 2
\item 3
\end{itemize}
\end{document}
基于此代码,我基本上需要的是,当它找到\ _开始{}时缩进4个空格,并在找到\ end {}时在-4个空格中缩进。
我可以个性化吗?
我读到了“indentexpr”,这可能会产生我的期望,但我无法找到任何示例或指导方针来开始。
对我来说,了解如何做到这一点非常重要,而不是获得解决方案。我需要指导来实现它,因为我可能也希望在其他语言中进行类似的“调整”。
答案 0 :(得分:4)
在 kev 的 tex.vim 文件中,要适应的重要部分是下一行:
1.-这些说没有包含这些字符串的缩进行。
if !exists("g:tex_noindent_env")
let g:tex_noindent_env = 'document\|verbatim'
endif
2.-完成此'if'条件的行是缩进的。
if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env
...
endif
3.-完成此'if'条件的行是不缩进的。
if cline =~ '^\s*\\end' && cline !~ g:tex_noindent_env
...
endif
您有两个选项,评论部分&& line !~ g:tex_noindent_env
或从document
删除g:tex_noindent_env
。
选项1(放在&&&&&&&&&&& amp;>
)之前if line =~ '\\begin{.*}' "&& line !~ g:tex_noindent_env
和
if cline =~ '^\s*\\end' "&& cline !~ g:tex_noindent_env
选项2(删除'文档'):
let g:tex_noindent_env = 'verbatim'
打开文件后执行gg=G
。它应该工作。
有关缩进表达式的详细信息,请查看syntax
vim
文件夹。通过:echo $VIMRUNTIME
Vim
获取
答案 1 :(得分:1)
indent
文件中最重要的代码行是:
setlocal indentexpr=YourIndentFunc()
在YourIndentFunc()
内,有一个上下文变量lnum
,用于跟踪当前行号。
YourIndentFunc()
计算当前行开头应插入多少个空格。