そこで、「Vrapper」さんの登場ですよ!
Eclipseのキーバインドをvim風にできるVrapperが素晴らしすぎる件について
Eclipseのエディターがvim風のキーバインドで使えます。しかも、Eclipseの補完機能なども同時に使えます!
確かに Vrapper すごい。
viPlugin は「補完がうまく働かない」「補完機能が同時に使えない」ってのはよく分からないけど(自分は困ったことないから)。
最近は vimrc をいじることが多くなり、より使いやすいキーバインドを求めていくにつれて eclipse + viPlugin 時のキー誤爆率が上昇しっぱなしでげんなりしてた。
viPlugin で一番困るのが inoremap と nnoremap を別々に定義できないこと。viPlugin が用意しているもの以外は eclipse のキー設定だのみなので i だろうが n だろうが同じ動作になってしまう。
ところが、Vrapper は別々に定義できる。しかも、 ~/.vrapperrc に自分で定義できる。これすごい。
ただし、
eclipse のキー設定で既に定義されているものは Vrapper で発動しない(上書きされない)
点には注意。ドキュメントをあまり見ずに軽い気持ちで始めると確実にハマる。その場合はキー検索をして削るしか無い。
eclipse で用意されている、undo redo format といったコマンドも呼び出すことができる。
"Add JavaDoc eclipseaction AddJavaDocComment org.eclipse.jdt.ui.edit.text.java.add.javadoc.comment nnoremap mj :AddJavaDocComment<CR> "definition ID of the source -> format action eclipseaction Format org.eclipse.jdt.ui.edit.text.java.format vnoremap = :Format<CR>
workbench、text editors、java editors から設定を一通り抜き出したものを github に上げているので、これから始められる方は参考にどうぞ。定義が多すぎると動きが遅くなったりするのかは謎。
http://github.com/basyura/vrapperrc/blob/master/vrapperrc
今のところ僕の設定はこんな感じ
set ignorecase set smartcase nnoremap <C-a> 0 nnoremap <C-e> :LineEnd<CR> nnoremap <C-f> <Right> nnoremap <C-b> <Left> nnoremap <C-u> 20<Up> nnoremap <C-d> 20<Down> nnoremap U :Redo<CR> nnoremap mj :AddJavaDocComment<CR> nnoremap mi :OrganizeImports<CR> inoremap <C-o> <Esc>o inoremap <C-h> <BS> inoremap <C-a> <Esc>0i inoremap <C-e> <Esc>:LineEnd<CR>a inoremap <C-f> <Esc><Right>a inoremap <C-b> <Esc>i inoremap <C-d> <Esc><Right>xi inoremap <C-w> <ESC>:DeletePreviousWord<CR>i inoremap <C-k> <Esc><Right>:DeleteLineToEnd<CR>a inoremap <C-u> <Esc>:DeleteLineToBeginning<CR>i inoremap <C-u> <C-g>u<C-u> noremap <C-u> <C-g>u<C-u> noremap <C-w> <C-g>u<C-w> vnoremap = :Format<CR>
なかなか思い通りに行かないところもあるので、試行錯誤中。AddJavaDocComment と OrganizeImports は地味だけど結構便利ではないかと。
最後に気になるところ(分からないところ)。