vimエディタのgd検索は検索履歴が入らない。ならば、自分で入れてしまえ。

vimエディタで愛用している機能の一つに
gdによるローカル変数宣言の検索があるんだけど、
この機能で気に入らない点がある。
(気に入らないと同時に、良い点でもある。)


それは、gdで検索したテキストが検索履歴に追加されないため、
直前にgdで検索していたテキストを再度検索しようとすると、検索できないこと。
探したいワードは複数ある方が普通なのだから、これは面倒だ。


というわけで、ちょっとスクリプトを組んでみた。

" mappingを上書き
nnoremap gd :call GD()<CR>

" カーソル下テキストを検索
" 検索履歴を追加
" 最後の検索ワードを置き換え
" 検索してマッチした位置に移動
function! GD()
    let cword = expand("<cword>")
    if cword == ""
        echohl ErrorMsg | echo "E349: カーソルの位置には識別子がありません" | echohl None
        return
    endif

    call histadd("/", '\<'.cword.'\>')
    let @/ = '\<'.cword.'\>'
    call searchdecl(cword)
endfunction


とりあえず、こんな感じだろうか。
使う場合は、.vimrc設定ファイルに上のコードを追加してくださいね。