2

VimLには、特定の条件に応じて行(または単語)を強調表示する一連の小さな関数があります。

関数の動作をスペル()と同様に機能することを考慮し:set spell、条件が満たされたときに下線を引く必要があります。

ただし、強調表示された線の数が約75を超えると、移動時にかなりの遅れが生じることがわかりました。左右または上下に。

デフォルトで有効にしていた便利な機能がいくつかありましAutoCommandsたが(たとえば、行が強調表示されている理由をエコーするなど)、すべてを無効にしても、すべてを強調表示する関数を呼び出すとすぐに、大きな遅延があることがわかります。

これは私が単語を強調するために使用しているものです:

call matchadd('MyCheck', '^\%'. line . 'l\_.\{-}\zs\k\+\k\@!\%>' . column . 'c')

そして、これは私がライン全体を強調するために使用するものです

call matchadd('MyCheck', '\%' . line . 'l\n\@!')

ラグを決定するための参照として使用する75の数値は単なる参照であり、私にとってはちょっとしたスイートスポットですが、それ以上のほとんどのものがますます悪化していることを示しています。

SpellBadのハイライトも使用していますがMyCheck、これが問題を引き起こすのではないかと真剣に疑っています。

遅れを避けるために私が別の方法でできることはありますか?matchadd最良の選択肢はありますか?

編集:それが私の関数やコードのいずれかが奇妙なことをしていないことを確認するために、私は500行のファイルを開いてこれを行いました:

highlight link MyCheck SpellBad                                                      
for line in range(line('$'))
    call matchadd('MyCheck', '\%' . line . 'l\n\@!')
endfor

これは基本的に、ファイルのすべての行を強調表示します。すべてが明らかに不可能なほど遅くなりました。

4

1 に答える 1

0

カーソルラインの設定を解除すると、パフォーマンスに大幅な(プラスの)効果があります。

私はそうしました:set nocursorline、そして今私の動きは(ハイライトに関係なく)以前のようにきびきびしています。

于 2012-12-19T16:04:29.307 に答える