1

menu.vim にこの関数があるとしましょう:

  function! s:Test()
   let search = '\d\+'
   let @/ = search
   return "normal n" 
  endfunction

検索結果が強調表示されないのはなぜですか? コマンドラインで行った
後にのみ、強調表示が行われます。また、キーボードのキー を押すと強調表示されます。 関数に同じ行 ( ) を入れると、機能しません。 ところで、私の VIM では強調表示が有効になっています。 コマンドラインを使用すると、うまく強調表示されます。 :set hls
n
:set hls

4

1 に答える 1

1

この動作は、マニュアルの の下に実際に記載されている可能性が:help functions-search-undoありますが、回避策については言及されていません。

最後に使用した検索パターンとやり直しコマンド「.」関数によって変更されません。:nohlsearchこれは、関数が戻るときに の効果が取り消されることも意味し ます。

のドキュメントに:nohlsearchも次のように記載されています。

autocommands の実行時にハイライト状態が保存および復元されるため、このコマンドは autocommand では機能しません autocmd-searchpatユーザー関数を呼び出すときも同じです。

于 2012-05-01T11:48:43.340 に答える