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

ctrlp.vimの使い方まとめ

$
0
0

ctrlp.vimとは

ctrlp.vimは多機能セレクタとかそんな感じのvimプラグインです。
環境変わるのが嫌で、カラースキーマやシンタックス関係意外あんまりvimにプラグインとか入れたくない派だったんですが、CtrlPは見た目よくてわかりやすく、結構気にいったので長く使ってます。
似たプラグインとしてはUniteがあります。比較するとUniteの方が高機能でいろいろ出来、他のプラグインと連携も出来ますが設定がやや複雑かなって感じです。

インストール

pathogen: 適当なとこにgit clone

git clone https://github.com/kien/ctrlp.vim ~/.vim/bundle

NeoBundle: .vimrcに書くだけ

NeoBundle "kien/ctrlp.vim"

使い方

Ctrl+pを押して適当に希望のファイル名っぽいのを入力すると勝手に絞り込んでくれます。便利。
例えば、railsかなんかを書いているとして、

view

とか打ち込むと、
5bdc55b6518b1ce68851b525b97a16d2.png
って感じでview以下だけうまく絞り込めます。
さらにこっからpost以下だけ見たいってときは、

view/pos

とかすると、
057977c6cccc5b312664bec6c35a765c.png
と省略して入力してもいい感じに察して絞り込んでくれます。

また、git管理されてるディレクトリの中などで使うとルートフォルダっぽいとこを自動で認識して、そこ以下のファイルを再帰的に探してくれます。

検索にはいくつかのモードがあって、正規表現による絞り込みもできます。
使える正規表現の例とかは :help ctrlp-input-formats を読むのが一番いいです。

キーマッピング

:help ctrlp-mappings するのが一番正確です。
デフォルトの設定でよくつかうやつだけ。

全般

キー動作
Ctrl+pCtrlP起動
Ctrl+c,ESCCtrlPを終了
Ctrl+dフルパス検索モードとファイル名のみの検索モードを切り替え
Ctrl+r正規表現検索モードと通常の検索モードを切り替え
Ctrl+f,Ctrl+b検索対象(バッファとか)を切り替え

コマンドラインでの操作

キー動作
Ctrl+j下を選択
Ctrl+k上を選択
Ctrl+aカーソルを先頭に
Ctrl+eカーソルを最後尾に
Ctrl+uコマンドラインをクリア
Ctrl+n,Ctrl+pコマンド入力履歴を辿る
Ctrl+\コマンドラインにいろいろコピペできるダイアログを開く (レジスタとか)
Tabディレクトリ名を補完

ファイル操作

キー動作
CR(Enter)現在のウインドウで開く
Ctrl+t新しいタブで開く
Ctrl+v垂直分割して開く
Ctrl+s,Ctrl+CR水平分割して開く
Ctrl+zファイルやディレクトリをマークする
Ctrl+oファイルをダイアログつきで開く。マークしてあるとマークしたファイルを全部開く
Ctrl+y新しいファイルを現在のディレクトリに作成。マークしてあるとそのディレクトリに対して作成する

Extensions

これまでの内容にも出てきましたが、CtrlPにはファイルだけでなく、さまざまなものを同じCtrlPインターフェイスで扱うための拡張が標準で付属しています。
標準で付属しているものの一覧は :help ctrlp-extensions にあります。
個人的に便利なやつをいくつか紹介します。

CtrlPBuffer
バッファセレクタとして使えます。

CtrlPMRUFiles
これまで開いたファイル履歴から絞り込みます。

CtrlPMixed
ファイル、バッファ、履歴を一度に絞り込みます。
ぶっちゃけこれで大体足りるといえば足りる。

CtrlPQuickfix
vimのquickfixと連携出来ます。
:grepとかと組み合わせて使うのがメインかも。

CtrlPTag
タグ一覧を表示、絞り込みできます。

CtrlPLine
現在のファイル内の各行を対象に絞り込みます。unite lineと大体一緒です。
簡易ファイル内grep的に使えます。

CtrlPDir
ディレクトリを検索してカレントディレクトリを切り替えたりできます。

設定例

:help ctrlp-options を見るのが(ry
デフォルトのコマンドが結構長くてめんどくさいので、よく使うの中心に適当にキー割り当てするのがいいと思います。
自分はsをあんまり使わないのでPrefix扱いにしてます。Ctrl+pは切ってます。

.vimrc
" Prefix: snnoremaps<Nop>nnoremapsa :<C-u>CtrlP<Space>nnoremapsb :<C-u>CtrlPBuffer<CR>nnoremap sd :<C-u>CtrlPDir<CR>nnoremapsf :<C-u>CtrlP<CR>nnoremapsl :<C-u>CtrlPLine<CR>nnoremapsm :<C-u>CtrlPMRUFiles<CR>nnoremap sq :<C-u>CtrlPQuickfix<CR>nnoremapss :<C-u>CtrlPMixed<CR>nnoremapst :<C-u>CtrlPTag<CR>letg:ctrlp_map ='<Nop>'" Guess vcs root dirletg:ctrlp_working_path_mode ='ra'" Open new file in current windowletg:ctrlp_open_new_file ='r'letg:ctrlp_extensions = ['tag','quickfix','dir','line','mixed']
letg:ctrlp_match_window ='bottom,order:btt,min:1,max:18'

Extensionの作成

自分でctrlp-extensionを作ることもできます。それほど難しくはないです。
詳しくはkaneshinさんによる記事がわかりやすいです。
githubなどにいろんな方が作られたctrlp-extensionがあるので、探してみるのもいいと思います。

参考

:help ctrlp
意外と知られていない便利なvimプラグイン「ctrlp.vim」
ctrlp.vimを使う


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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