Vimのファイル内のあいまい検索


21

VimでCommand-Tプラグインを使用して、ファイル名のあいまい検索を行うのが大好きです。とても気に入っているので、オープンバッファ内の任意の文字列に対して同じファジー検索を実行したいと思い始めました。

たとえば、のようなセレクターを含むCSSファイルを編集している場合#support-main .question .answer-rating、現在入力/support-main .questionしてその行を見つけることができます。

ファジーファインダーを呼び出して、supmaique同じ行を(他の中でも)見つけたいようなものを入力するだけでいいのです。/sup.*mai.*que同じ効果を入力できることはわかっていますが、を入力すると.*集中力が低下します。

これを行う方法はありますか?

回答:


23

vimの最新のCtrl-Pプラグイン(ctrlp)には「行」拡張機能があり、ファジー行検索を実行できます。拡張機能を手動で有効にする必要があります。ここに私の設定があり.vimrcます:

let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_extensions = ['buffertag', 'tag', 'line', 'dir']

その後、を押しCtrl-pてメニューを表示し、Ctrl-fラインモードがオンになるまで数回押します。ファジー文字列を入力してください:

ここに画像の説明を入力してください

2014年2月27日更新

私が現在自分で使用している代替ソリューションは、uniteを使用することです。ファジーライン検索を行うには、結合をわずかに調整する必要があります。

call unite#filters#matcher_default#use(['matcher_fuzzy'])
call unite#filters#sorter_default#use(['sorter_rank'])
call unite#custom#source('file,file/new,buffer,file_rec,line', 'matchers', 'matcher_fuzzy')
nnoremap <C-k> :<C-u>Unite -buffer-name=search -start-insert line<cr>

を押しCtrl-kて入力します:

ここに画像の説明を入力してください

ところで、uniteは名前によるファジーファイル検索も実行できます。

2016年8月3日更新

行検索を行う別の方法は、fzfを付属のvimプラグインとともに使用することです。こちらのインストール手順をご覧くださいhttps : //github.com/junegunn/fzf.vim#installation

fzfとfzf.vimの両方をインストールした後、使用:BLinesして現在のバッファーの行を検索できます。

サンプル出力

ファジー検索ではないことに気づいたかもしれませんが、これはスペースを使用する必要があることを意味します。これはうまくいかないかもしれません。


代替ソリューションとして統一を追加しました。
バルタザール14

代替ソリューションとしてfzfを追加しました。
バルタザール

1

正確にあなたが望むものではありませんが、set incsearchあなたのパターンはあなたがタイプするにつれてマッチします。それは本当にあいまいなマッチングではありませんが、感覚はある種似ています。


ああ、はい。incsearch素晴らしいですが、私が探しているものではありません。
アダメスク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.