私は vimgrep (または grep) を使用して vim 内のファイルを検索しますが、vim で検索するたびにそれを書かなければならないのはかなり不便です。ファイルを検索するための適切なショートカット キーを作成する方法について何か考えはありますか?
よろしく、
ラフィド
私は vimgrep (または grep) を使用して vim 内のファイルを検索しますが、vim で検索するたびにそれを書かなければならないのはかなり不便です。ファイルを検索するための適切なショートカット キーを作成する方法について何か考えはありますか?
よろしく、
ラフィド
次のように入力すると、コマンド ラインが表示されvimgrep
ます。F3normal mode
:nmap <F3> :vimgrep<space>
常に現在のディレクトリを検索したい場合は、次を試してください。
:nmap <F3> :vimgrep // *<left><left><left>
さらに多くのキープレスを節約したい場合は、これを試して、現在のディレクトリでカーソルの下の単語を検索してください。
:nmap <F3> :vimgrep /<C-R><C-W>/ *<CR>
もちろん、これらはファイルに入れることができ.vimrc
ます。
Vim に組み込まれているヘルプ システムは、このテーマに関する多くの有用な情報を提供します。私が行ったことを説明するには、次のセクションを参照してください。
:help :nmap
:help c_CTRL-R_CTRL-W
Johnsyweb のソリューションの代替:
set grepprg=ack
nnoremap <F2> :grep<space>
nnoremap <F3> :noautocmd vimgrep // **/*<c-f>$Bhhi
nnoremap <S-F3> :noautocmd vimgrep /<C-R>// **/*<return>
xnoremap <F3> :<c-u>let tmp=@y<cr>gv"yy:noautocmd vimgrep /\V<c-r>=substitute(substitute(@y,'\','\\','g'),'/','\/','g')<cr>/ **/*<return>:let @y=tmp<cr>:unlet tmp<cr>
これは、F2 を ack にマップし、Perl 正規表現を使用)、F3 を autocmds がトリガーされていない vimgrep にマップし (はるかに高速)、shift-f3 を現在の検索パターンの vimgrep にマップし、ビジュアル モードの F3 を現在の強調表示されたテキストの vimgrep にマップします。
正確にはエレガントではありませんが、これらのコマンド ライン マップを使用します (他のコマンドですべてのファンクション キーを既に使用しているため)。
cmap vvv vimgrep // **/*.*<Left><Left><Left><Left><Left><Left><Left><Left>
cmap vvs vimgrep // **/*.sas<Left><Left><Left><Left><Left><Left><Left><Left><Left><Left>