Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Ack.vim でビジュアルモードで選択した文字列から直接コード検索する

$
0
0

はじめに

プロジェクト内でコードの検索をかけるときに、Ack.vimをよく使っています。その Ack.vim で、ビジュアルモードで選択した部分を直接検索する方法を調べたので、簡単にまとめます。

課題

今まで Ack.vim でコード検索をするときは、以下のような手順を踏んで実行していました。

  • 検索したい文字列をビジュアルモードで選択してヤンク
  • :Ackと入力した後にヤンクした文字列をペースト
  • Enter キーを押して実行

しかし上記の手順を何度も繰り返していると、段々と億劫になってくるところがありました。

そのため、以下のような手順で検索をかけられると楽になるなと思い、方法を探していました。

  • 検索したい文字列をビジュアルモードで選択
  • ショートカットキーで選択した文字列に対して :Ackを実行

tl;dr

Using Ack.vim on visual selection - Stack Overflowにやりたいことそのものが紹介されていました。

以下のコマンドを .vimrcに追記することで実現できました。

vnoremap <Leader>gy:Ack <C-r>=fnameescape(@")<CR><CR>

やっていること

上記についてそれぞれやっていることを記載します。

コマンド詳細
vnoremap {lhs} {rhs}ビジュアルモードのとき、キー入力 {lhs}{rhs}に割り当てる
<Leader>g特殊文字列 <Leader>gの組み合わせ。(mapreaderに何も設定していない場合、<Leader>はバックスラッシュが使用される)
y選択文字列をヤンク
:AckAckコマンド実行
<C-r>=このコマンド以降で実行された式の評価値を利用する
fnameescape(@")<CR>選択した部分をエスケープして Enter
<CR>Enter

こちらによって、検索したい箇所を選択してから<Leader>gを入力するだけで、Ackを実行できるようになりました。

@"の部分がビジュアルモードで選択されている部分を表しているようなのですが、なぜこの文字列で表せるのかまでは調べきれませんでした。。

おわりに

普段良く使うコマンドのキー入力を減らすことができると、より負担が軽くなることを感じました。他にも何度も使っているコマンドを見つけたら、より便利になる方法を探してみたいと思います。

参考


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>