この関数をコピーして、 and で視覚的に検索しまし*
た#
。
function! s:VSetSearch(cmdtype)
let temp = @s
norm! gv"sy
let @/ = '\V' . substitute(escape(@s, a:cmdtype.'\'), '\n', '\\n', 'g')
let @s = temp
endfunction
xnoremap * :<C-u>call <SID>VSetSearch('/')<CR>/<C-R>=@/<CR><CR>
xnoremap # :<C-u>call <SID>VSetSearch('?')<CR>?<C-R>=@/<CR><CR>
マッピングは#
正常に機能しますが、*
マッピングは視覚的な選択を終了しません (次の検索語まで視覚的な選択の範囲を拡張します)。なぜこれが起こっているのかわかりません。解決策はありますか?
編集:問題を再現するには、コード スニペットを保存し、MS インストーラーcmd.exe
をダウンロードし、 vimを開いて起動し、保存したコードvim -u NONE
を実行:set nocp
して最後にソースします。実際、次の単純なマッピングも機能しません。
nnoremap * *<C-o>
編集 2:他の誰かがこの問題を再現できますか? それは報告されるべきですか?
編集 3:問題 (バグ?) は、*
(スター) キーを再マップできないことだと思います: vim -N -u NONE
(Vim 7.4 パッチ 1-274) で vim を起動し、コマンドを実行して:noremap * :echo "star"<CR>
を押す*
と、vim は検索を実行しようとします. これは vim dev グループにも報告しました。