VimのUniteプラグインで、ファイル、バッファ、レジスタ、ブックマークを管理する方法を紹介します。
この記事を読んで、できるようになること
- vim上でディレクトリを移動し、ファイルを開くことができる。
- 最近使用したファイル一覧から、ファイルを開くことができる。
- 現在開いているバッファを一覧表示し、バッファを開いたり、削除することができる。
- レジスタの情報を一覧から選択し、貼り付けることができる。
- ファイルやフォルダをお気に入り登録し、お気に入りから目的のファイルを開くことができる。
目次
- 環境
- uniteとは
- uniteのインストール
- vimrcの設定
- uniteの操作方法
- 現在開いているファイルのディレクトリ下のファイル一覧を表示
- 最近使用したファイル一覧を表示
- バッファ一覧を表示
- レジスタ一覧を表示
- ブックマーク一覧を表示
環境
検証した環境は下記の通りですが、MacやLinuxでも同じ設定で動作確認済みです。
- windows7 64bit
- kaoriya gvim 7.3
- unite 2.2
uniteとは
uniteは、様々な情報を統一された操作で管理することができるプラグインです。
例えば、ファイル、バッファ、最近使用したファイル、ブックマークなどの情報を表示し、検索を行うことができます。
目的の情報にたどり着いた後は、様々なアクションを実行して次の作業に移ることができます。
情報はsourceと呼ばれ、sourceを自作することで様々な情報をUnite上で扱うことができるようになります。
uniteには標準でいくつかのsourceが入っています。
uniteのインストール
uniteをダウンロード
https://github.com/Shougo/unite.vim/tags
本記事作成時点の最新バージョンは2.2です。
uniteの設置
私はpathogenを使用していますので、Windowsの場合、ダウンロードして解凍したフォルダを$HOME\vimfiles\bundle\以下に配置しました。
配置後の状態は下記の通り。
$HOME/vimfiles/bundle/Shougo-unite-8475439/
$HOME/vimfiles/bundle/Shougo-unite-8475439/autoload/
$HOME/vimfiles/bundle/Shougo-unite-8475439/doc/
$HOME/vimfiles/bundle/Shougo-unite-8475439/plugin/
$HOME/vimfiles/bundle/Shougo-unite-8475439/syntax/
$HOME/vimfiles/bundle/Shougo-unite-8475439/test/
$HOME/vimfiles/bundle/Shougo-unite-8475439/README
vimrcの設定
ほとんどマニュアルの設定の通りですが、若干修正を加えています。
uniteの持つ様々な機能は、vimrcでキーにマッピングして呼び出すのが一般的です。
"unite prefix key.
nnoremap [unite] <Nop>
nmap <Space>f [unite]
"unite general settings
"インサートモードで開始
let g:unite_enable_start_insert = 1
"最近開いたファイル履歴の保存数
let g:unite_source_file_mru_limit = 50
"file_mruの表示フォーマットを指定。空にすると表示スピードが高速化される
let g:unite_source_file_mru_filename_format = ''
"現在開いているファイルのディレクトリ下のファイル一覧。
"開いていない場合はカレントディレクトリ
nnoremap <silent> [unite]f :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
"バッファ一覧
nnoremap <silent> [unite]b :<C-u>Unite buffer<CR>
"レジスタ一覧
nnoremap <silent> [unite]r :<C-u>Unite -buffer-name=register register<CR>
"最近使用したファイル一覧
nnoremap <silent> [unite]m :<C-u>Unite file_mru<CR>
"ブックマーク一覧
nnoremap <silent> [unite]c :<C-u>Unite bookmark<CR>
"ブックマークに追加
nnoremap <silent> [unite]a :<C-u>UniteBookmarkAdd<CR>
"uniteを開いている間のキーマッピング
autocmd FileType unite call s:unite_my_settings()
function! s:unite_my_settings()"{{{
"ESCでuniteを終了
nmap <buffer> <ESC> <Plug>(unite_exit)
"入力モードのときjjでノーマルモードに移動
imap <buffer> jj <Plug>(unite_insert_leave)
"入力モードのときctrl+wでバックスラッシュも削除
imap <buffer> <C-w> <Plug>(unite_delete_backward_path)
"ctrl+jで縦に分割して開く
nnoremap <silent> <buffer> <expr> <C-j> unite#do_action('split')
inoremap <silent> <buffer> <expr> <C-j> unite#do_action('split')
"ctrl+jで横に分割して開く
nnoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit')
inoremap <silent> <buffer> <expr> <C-l> unite#do_action('vsplit')
"ctrl+oでその場所に開く
nnoremap <silent> <buffer> <expr> <C-o> unite#do_action('open')
inoremap <silent> <buffer> <expr> <C-o> unite#do_action('open')
endfunction"}}}
uniteの操作方法
上記の.vimrcで設定している場合のuniteの操作方法です。
挿入モードとノーマルモード
uniteには、挿入モードとノーマルモードがあります。
モードの移動はvimと同じように、i, a, Esc キー等で行います。
挿入モード
挿入モードは、unite上部のプロンプトに検索ワードを入力して、候補を絞り込むモードです。
よく使用する操作は下記の通り。
- Ctrl+n 下の候補に移動
- Ctrl+p 上の候補に移動
- Enter デフォルトのアクションを実行
- Esc ノーマルモードに移動
- jj ノーマルモードに移動
- Ctrl+u Ctrl+h 連続入力 uniteを閉じる
- Tab デフォルト以外のアクションを選択
ノーマルモード
ノーマルモードは、検索されて絞り込んだ情報に移動するためのモードです。
よく使用する操作は下記の通り。
- j 下の候補に移動
- k 上の候補に移動
- Enter デフォルトのアクションを実行
- i 挿入モードに移動、カーソルをプロンプトに移動
- a 挿入モードに移動、カーソルをプロンプトに移動
- Esc uniteを閉じる
モード共通操作
- Ctrl+j 対象を縦分割して開く
- Ctrl+l 対象を横分割して開く
- Ctrl+o 対象を現在のウィンドウに開く
Ctrl+oは一見意味のないマッピングに見えます。
mruやbookmarkからディレクトリを開く時、デフォルトアクションがnarrowのためにEnterキーでディレクトリに移動することができません。
私はopenアクションをCtrl+oにマッピングし、ディレクトリを開くときはCtrl+oキーを使用しています。
現在開いているファイルのディレクトリ下のファイル一覧を表示
<space>ff キーで、file sourceを開きます。
uniteでファイル一覧表示、ディレクトリ移動、ファイルを開く、名前の変更する 等の操作を行うことができます。
uniteで一番よく使う機能です。
:e はほとんど使わなくなりました。
よく使用する操作は下記の通り。
- 挿入モードでワードを入力してディレクトリ、ファイルを検索
- Enter ディレクトリ、ファイルを開く
- Ctrl+w 挿入モードにおいて、対象ディレクトリをひとつ上に上げる。
- b 対象ディレクトリ、ファイルをブックマークに追加
- Tab 他のアクションを選択
Tabキーで他のアクションを選択することができます。renameアクションでファイル・フォルダ名前を変えたり、vimshellアクションでVimShellを起動することもよくやります。
最近使用したファイル一覧を表示
<space>fm キーで、file_mru sourceを開きます。
最近使用したファイル一覧を表示します。
uniteで2番目によく使う機能です。
最近開いたファイル名をあいまい検索、ファイルオープンの流れが強力すぎます。
設定で50件に絞っていますが、もっと多くてもいいかもしれません。
バッファ一覧を表示
<space>fb キーでbuffer sourceを開きます。
現在開いているバッファ一覧を表示します。
バッファのファイルを開いたり、バッファを一括削除したりできます。
:ls は全く使わなくなりました。
よく使用する操作は下記の通り。
- 挿入モードでバッファ内を検索
- Enter バッファを開く
- space ファイルをマーク
- d 選択したバッファ、マークしたバッファを削除
レジスタ一覧を表示
<space>fr キーでregister sourceを開きます。
コピーなどで使用したレジスタが一覧表示されます。
* や + のレジスタに加え、名前付きレジスタも表示されます。
複数の文字列をコピーしたりカットしたいとき、名前付きレジスタにコピーしておいて、後から名前付きレジスタを参照してペーストするときに使っています。
ブックマーク一覧を表示
<space>fc キーでbookmark sourceを開きます。
ブックマーク一覧を表示します。
よく使用する操作は下記の通り。
- Enter ブックマークしたファイルを開く
- Ctrl+o ブックマークしたディレクトリを開く
- space カーソルの位置の項目をマーク
- d カーソル位置のブックマークやマークしたブックマークを削除
ディレクトリをブックマークに追加
Unite上でブックマークしたいディレクトリにカーソルをあわせ、bキーでブックマークを追加します。
Tabキーでbookmarkアクションを選択しても追加できます。
ファイルをブックマークに追加
Unite上でブックマークしたいファイルにカーソルをあわせ、bキーでブックマークを追加します。
ファイルを開いている時に、<space>faキーでもファイルをブックマークできます。
please input bookmark name: と表示されるので任意の名称をつけてEnterでブックマークに追加されます。カーソル位置もブックマークされます。
ブックマークの保存場所
ブックマークは$HOME/.unite/.bookmark に保存されていますので直接整理することもできます。