2012-01-21

Vim環境の見直し

最近「Vimテクニックバイブル」を読んでVimの環境の設定の見直しを行った。

neocomplcache

neocomplcacheは自動補完を可能にする。

自動補完候補のポップアップメニューが表示された状態で<Tab>, <C-n>, <C-p>で候補を選択できる。<C-y>で選択が確定されメニューが閉じる。<C-e>で選択がキャンセルされる。

候補がスニペットの場合、<C-k>コマンドでスニペットが選択され、さらに<C-k>コマンドによりプレースホルダを移動できる。

<C-x><C-o>によりオムニ補完が起動される。

visualstar

*コマンドを押すことでカーソル下の単語の検索を行うことができるが、visualstarをインストールするとビジュアルモードで選択したテキストの検索を*コマンドで行えるようになる。

この際、単語境界が有効になるが、無効にしたい場合にはg*コマンドを用いる。

YankRing

YankRingにより、ヤンクの履歴を保持できるようになる。pやPコマンドによるペースト後に<C-j>, <C-k>を押すことで履歴をたどってペーストしたテキストを置き換えることができる。

また:YRShowコマンドで履歴をバッファに表示して選択などができる。

[pコマンド

[pコマンド[Pコマンドでカーソル位置のインデントに合わせてペーストすることができる。

EasyMotion

EasyMotionによりカーソルの移動先をアルファベット1文字で指定できるようになる。gjコマンドを押すとカーソル位置より下の行ごとにアルファベットが表示され、そのアルファベットを押すとそこにカーソルを移動できる。

同様にgkコマンドではカーソル位置より上の行へ、gwコマンドではカーソル位置以降の単語の先頭へ移動できる。

Surround

Surroundによりテキストを「括弧」で囲んだり、「括弧」を削除したりできる。「括弧」としては通常の括弧以外にクオーテーションやHTMLタグも用いることができる。

ysコマンドによりテキストを「括弧」で囲むことができる。

dsコマンドによりテキストの「括弧」を削除することができる。

csコマンドによりテキストの「括弧」を置換することができる。

ビジュアルモードでテキストを選択した状態でSコマンドを用いることで選択範囲を「括弧」で囲むことができる。

tcomment

<C-_><C-_>コマンドで現在行のコメントアウトをオンオフできる。

ref

refにより様々なリファレンスマニュアルを表示できる。

\kコマンドによりカーソル下の単語のリファレンスマニュアルを表示できる。

:Ref kind keywordコマンドにより任意の種類の単語のリファレンスマニュアルを表示できる。例::Ref perldoc -f print

errormarker

errormarkerにより:makeの結果のエラーをソース行に表示できる。

quickrun

quickrunにより現在のバッファのソースコードを実行できる。\rコマンドで実行される。

vimshell

vimshellはVim内でシェルの実行を可能にする。:VimShellコマンドで実行される。

calendar

calenderによりカレンダーを表示できる。:Calendarコマンドで表示される。

qfreplace

qfreplaceによりquickfixに表示された行をまとめて編集できる。quickfixバッファで:Qfreplaceコマンドを実行するとquickfixに表示された行が表示されたバッファが新たに作られる。このバッファを編集してセーブすると結果が各ファイルの該当箇所に反映される。

unite

N/A.

2012-01-17

vimプラグインneocomplecacheのキーバインド設定

vimでneocomplecacheを試している。何も設定しないと使えない機能があったりやや謎の挙動を示したりするので、キーバインドを設定する必要がある。

imap <C-k> <Plug>(neocomplcache_snippets_expand)
smap <C-k> <Plug>(neocomplcache_snippets_expand)
" inoremap <expr><C-g> neocomplcache#undo_completion()  " buggy
inoremap <expr><C-l> neocomplcache#complete_common_string()
inoremap <expr><CR> neocomplcache#close_popup() . "\<CR>"
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
" inoremap <expr><C-h> neocomplcache#smart_close_popup() . "\<C-h>"
" inoremap <expr><BS> neocomplcache#smart_close_popup() . "\<BS>
inoremap <expr><C-y> pumvisible() ? neocomplcache#close_popup() : "\<C-y>"
" inoremap <expr><C-e> neocomplcache#cancel_popup()
  • コードスニペット補完のプレースホルダを移動するのに<C-k>を用いるようにする。
  • ポップアップ中に<C-g>を押すことで補完をキャンセルできるはずだが、現在何か挙動が変なのでコメントアウトしてある。
  • ポップアップ中に<C-l>を押すことで候補の最長共通部分まで補完を進めるようにする。
  • ポップアップ中に<CR>を押すことで、ポップアップを閉じ、候補を選択していない場合には単に改行を入れ、選択している場合には確定して改行をいれるようにする。
    • <CR>は何も設定しないと改行が入力されたりしなかったりする謎の挙動をする。
  • ポップアップ中に<TAB>を押すことで次候補に移動するようする。
  • ポップアップ中に<BS>を押すことでポップアップを閉じて1文字削除するようにできるが、1文字削除に伴って候補が更新される方が好みなので設定しない。
  • ポップアップ中に<C-y>を押すことで選択候補を確定させてポップアップを閉じるようにする。
  • ポップアップ中に<C-e>を押すことで候補の選択をキャンセルしてポップアップを閉じるようにできるが、単に候補の選択をキャンセルする方が好みなので設定しない。

2011-12-04

Ubuntu (Debian) で java 実装を切り替える

Ubuntu (Debian) で実装を切り替えるには update-alternative コマンドを通常用いるが、java は切り替えるものが多くて大変である。そこで java の実装を一斉に切り替えるために専用のコマンド update-java-alternatives が用意されている。