2011-12-17 15 views
2

まあ、私は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つのスペースでインデントということです:

のは、私はこのようなindentateんvimのを望んでいたとしましょう\ end {}を見つけたときは-4のスペース。

私はパーソナライズできますか?

私は "indentexpr"について読んでいますが、これはおそらく私が期待しているものを生成しますが、どこから始めるべきかの例やガイドラインを見つけることができませんでした。

私は解決策を得ずに、それを行う方法を学ぶことが重要です。おそらく私は他の言語でも同様のチューニングをしたいと思うので、それを達成するためのガイドラインが必要です。

答えて

4

次の行です:

1.-これらは、それらの文字列が含まれていないインデントラインに言います。

2.この 'if'条件を達成する線はインデントされます。

if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env 
    ... 
endif 

3.この 'if'条件を達成する線はインデントされていません。

if cline =~ '^\s*\\end' && cline !~ g:tex_noindent_env 
    ... 
endif 

次の2つのオプション、コメント部分&& line !~ g:tex_noindent_envを持っているか、VAR g:tex_noindent_envからdocumentを削除します。

オプション1(ちょうど& &前に「置く)

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

+0

ちょうど私が必要なもの。私はLaTeXに必要なものを修正することができました。おそらく私が今持っている情報は、自分で何か試してみるのに十分なものです。ありがとう!もう一つの情報:/ usr/share/vim/vim73/indentにインデントファイルがあります。私はそこに私の変更を行う必要がありますか私は他の場所に自分の改造を置く必要がありますか? – Falassion

+0

@Birei:いい答えです。 –

+0

@Falassion :(Linuxマシンをベースにしています) 'tex.vim'ファイルを '〜/ .vim/indent /'にコピーして修正してみてください。 Vimはその前にそれを読んで、その字下げだけを適用するべきです。 – Birei

1

indentファイル内のコードの中で最も重要な行は次のとおりです。YourIndentFunc()以内

setlocal indentexpr=YourIndentFunc() 

、現在の行番号を追跡し、コンテキスト変数lnumがあります。
YourIndentFunc()は、現在の行の先頭に挿入する空白の数を計算します。 KEV適応する重要な部分のtex.vimファイルで

tex.vim : Indent file for TeX

+0

これはLaTeXの解決策です。しかし、私がそこに述べたように、私が望むのは、それを行う方法、基本を学ぶことです。 – Falassion

+0

Hmmm ..ビレの説明と連合して、私が望むものを達成することができます。ありがとう! – Falassion

関連する問題