Vim、シンタックスハイライトをリロードする方法


回答:


97

使用する :syntax sync fromstart

私はhttp://vim.wikia.com/wiki/Fix_syntax_highlightingからそのヒントを得ました

その記事は、そのコマンドのマッピングを作成することも提案しています。たとえば、F12をマップします。

noremap <F12> <Esc>:syntax sync fromstart<CR>
inoremap <F12> <C-o>:syntax sync fromstart<CR>

これは機能しますが、スペルチェックの下線が削除されます。それを防ぐ方法はありますか?
アレック・ジェイコブソン

1
すみません、わかりません。スペルチェックをしているものは何もありません。それはあなたの特定のアドオンに依存するかもしれません。他に誰も答えない場合は、すべての関連情報を使用して質問を作成する価値があるかもしれません。
Mike Lippert 2014

3
autocmd BufEnter,InsertLeave * :syntax sync fromstartバッファに入った後、構文同期を強制するために使用することになります。構文の同期は、InsertLeaveイベントが発生したときにもトリガーされます。
サミュエルリー

多分誰かがこれがいつか役に立つと思うでしょう。filetype=shまたはsyntax=shをbashなどに使用しbashます。ではありません。それを理解するためにいつか私を連れて行った。
quapka

私はこれに:do Syntax相当するものを使用している:doautocmd Syntaxので、バインドする必要はありません(少なくとも、このコマンドを頻繁に呼び出す必要はないので、入力するだけです)。私は主に、netrwを介してファイルを開くと、構文の強調表示が壊れてしまう正規表現を含む一部のファイルで使用します。
RensTillmann19年

54

試してみてください:

:e

ファイルに未保存の変更がない場合。

または:

:syn off | syn on

痛みを緩和するためのマッピングを作成し、のようなものnmap <F6> :Rmodel|e<CR>
holygeek

2
構文の強調表示を更新するための組み込みコマンドがあるはずです。他に機能しているように見えるのは、ファイルの最初や最後など、ファイルの別の部分にジャンプして、元に戻ることです。例:gg``
Keith Pinson 2012年

2
「:syntaxsync fromstart」(引用符なし)は、構文の色付けが表示されないことがあるファイルで、ファイルタイプのシンタックスハイライトを再読み込みしませんでした。これは、何らかの理由で私とVimにとって継続的な問題です。ただし、「:syn off | synon」はすぐに機能しました。「:e!」リロードも実行されますが、注意してください。ファイルへの保存されていない変更は失われます。
ビクトリアスチュアート

:syn off | syn on迷惑なカラースキームを変更します
naught101 2018

12

上記のすべてを試しました-どれも私のために働きませんでした。

動作する唯一のことは: :filetype detect だから私はクイックショートカットを再マップしました :noremap <Leader>,ftd :filetype detect


10

構文が問題ない場合もありますが、壊れているのは折りたたみだけです。その場合zx、大いに役立ちます。

VIMドキュメントから:

zx

折り畳みの更新:手動で開いた折り畳みと閉じた折り畳みを元に戻します:「foldlevel」を再適用してから、「zv」を実行します:カーソル行を表示します。また、フォールドの再計算を強制します。これは、 'foldexpr'を使用していて、フォールドが適切に更新されないようにバッファーが変更された場合に役立ちます。


5

別のオプションは次のとおりです。

doautocmd Syntax

1
FWIW、これは私がこの問題を持っていたときの固定構文がハイライト表示することを唯一の答えである(syntax sync fromstart何もしなかった、また何かをやった!)
TJエリス

1
これの短いバージョンは次のようになります:do Syntax
RensTillmann19年

-1

試してみてください:

:Rrefresh!

このコマンドは、特定のキャッシュ設定を更新し、rails.vimをリロードします
Railsでの構文の強調表示を更新するのに役立ちます。


これは一般的な解決策にのみ適用されrails.vim、一般的な解決策ではありません。そのプラグインがないと、このコマンドは存在しません。
wchargin 2016

-1

次のことも試すことができます。

CTRL-L

VIMドキュメント(:h CTRL-L)から:

画面をクリアして再描画します。再描画は、先行入力を処理した後、後で発生する可能性があります。


Ctrl-Lで画面を更新します。対応する構文ファイルに変更を加えても違いはありません。
AlexisWilke19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.