web-dev-qa-db-ja.com

Vimのスペルチェックは.texファイルで常に機能するとは限りません。 Vimでリージョンを確認する

Vimを使用して.texファイルを書き込みますが、Vimのスペルチェッカーに問題があります。単語をチェックしないこともありますが、以下の理由があるのではないかと思います。

Vimは、たとえば前文ではなく、.texドキュメント内のすべての単語をチェックすることは明らかに想定されていないため、特定の領域のスペルのみをチェックします(構文上の意味で)。 here から収集したように、これらの領域の1つはtexSectionZoneです。これらの領域は非常に大きくなる可能性があり、実際にセクションが大きくなることが多いため、Vimは実際にtexSectionZone領域(または他の領域)にあることを認識できず、スペルをチェックしません。これは、ドキュメントを検索したり、複数行(またはページ)をスキップするジャンプを行ったりした場合に発生する可能性があります。

私がこれを結論付けた方法が理由かもしれません:私はコマンドが

:echo synIDattr(synID(line("."),col("."),1),"name")

あなたがいる地域の名前を印刷します(私はそれを見つけました ここ )、それでスペルチェッカーが機能しなかったとき私はこれを試しました、そしてそれはそれがどの地域にもまったくなかったと私に言いました。それが機能した場所、私はそれがスペルをチェックする必要がある地域にいました。

これまでのところ、私の唯一の解決策は、スペラーにチェックさせたいポイントの上の最も近いセクションを見つけてから、手動でカーソルを指定されたポイントに戻すことです。

理想的には、これが起こらないようにするソリューションが非常に欲しいのですが、カーソルをあまり動かさなくても、vimがどの領域にあるかを手動で「更新」する方法も決心します。後者の場合、私はショートカットにできる解決策を考えています。

PS私は質問を何と呼ぶべきかについて疑問でした。問題をよりよく説明するタイトルを思いついた場合は、自由に変更してください。

32
Kristian

syntax/tex.vimはすでに非常に複雑な同期パターンを使用して構文の強調表示が正確であることを確認していますが、長くて複雑なドキュメントの場合、これは失敗する可能性があります。

あなたができる最善のことは、

syn sync maxlines=200
syn sync minlines=50

(例:2000および500まで)。これを~/.vim/after/syntax/tex.vimに入れて、デフォルトを上書きします。

syntax sync fromstart

最良の結果が得られる場合がありますが、遅すぎる場合があります。構文同期の説明は:help :syn-syncにあります。

20
Ingo Karkat

構文グループが定義されていない(またはvimによって検出されていない)場合、スペルチェックは実行されません。未定義のグループに対してもスペルチェックを有効にすると便利だと思います(vimの構文ドキュメントのtoplevelを参照)。

これを行うには、次のコマンドを記述します。

syntax spell toplevel

ファイル内~/.vim/after/syntax/tex.vim。ファイルが存在しない場合は作成します。

38
Dominik