いつまで経ってもカーソル操作を矢印キーでやってしまう軟弱者にファイルを編集する資格なんて無かった
nnoremap <Up> :q!<CR>
nnoremap <Down> :q!<CR>
nnoremap <Left> :q!<CR>
nnoremap <Right> :q!<CR>
inoremap <Up> <ESC>:q!<CR>
inoremap <Down> <ESC>:q!<CR>
inoremap <Left> <ESC>:q!<CR>
inoremap <Right> <ESC>:q!<CR>
キビシイ
あるある
挿入モードで移動するときはどうしてます? 挿入モードで< c-o >h, < c-o >j, < c-o >k, < c-o >l で移動できる以外にコツがあれば教えてください。 < C-o > hで出来ますが、かなり遅いので以下をvimrcに追加したことがあるのですが、なるべくvim自体の機能を使いたいのでお願いします。
inoremap < C-S-h > h
inoremap < C-S-j > < C-o >j
inoremap < C-S-k > < C-o >k
inoremap < C-S-l > < C-o >l
@tf2014
hjkl
で移動するのはちょっと遅いですね。ft,.wbe
等のほうが早いでしょう。それらを使えば、ただ<C-[>
でノーマルモードに戻って速く移動できます。一字以上の移動をするときには、hjkl
を使わなければいいでしょう。vimgolfを知っていますか?@tssund93 さん
ありがとうございます。vimgolfについて検索してみました。楽しみながら、勉強になりそうです。
@tf2014 さん
おそらく挿入モードでhjklによるカーソル移動を許してしまうと、
それは本質的には矢印キーを禁止した意味がなくなると思います。(記事内の禁止方法は極端ですが)
vimというよりviの思想に沿うのであれば、カーソル移動時は必ずノーマルモードに移動し、適切なカーソル移動後に挿入モードにまた戻すというのが自然かと思われます。
@tssund93 さんも仰ってますが、vimでは狙った所に適切にカーソル移動してくれる機能が標準で豊富に用意されています。hjklはほんとうに1文字移動したい時にのみ制限して最小のキー数で済ませるのがvimの醍醐味ですね。
ちなみに挿入モードでの矢印キーは、内部的にはノーマルモードに移行してhjklを入力して挿入モードに戻るという一連の操作になるみたいです。
@Sa2Knight さん、
詳しい説明ありがとうございます。要するに、「挿入モードで移動するな」ということですね。例えば、
int Add(int a, int b){
return a + b;
}
を書くとき、私は()や{}の閉じ忘れがないように、Add()とかいて←を押して()の中に入ってから「int a, int b」と書くのですが、
となり、左に一字戻るだけで< ESC>を押すのがすごく不便な感じがするのです。
困ったことに、< C-o> hだとなぜか()の左側にカーソルが行ってしまったり。
試行錯誤してみます。
@tf2014
私はこうしています。
i int Add()
<esc>i int a, int b
<esc><s-a> {}
<esc>i<cr>return a+b;<cr>
<esc>
ちなみに、私は
jk
を<esc>
にマッピングしているので、実際にはあまりホームポジションからは動かなくてストレス少ないです。つまり、.vimrcには下記を設定しています。
inoremap jk <esc>
例えば、挿入モードで1文字戻るには
jki
, 行末へ移動するにはjk<s-a>
です。@tf2014 さん
@kota9 さん
記事の本筋とはズレますが、私はプラグイン(Townk/vim-autoclose)を導入して、
括弧、コーテーション、do/end、if/fi(endif)など、対になるモノは自動入力されるようにしています。
まっさらのvimだったら確かに迷いますね‥‥。まっさらなら妥協して矢印キー使うかもしれません(笑)
@kota9さん、
勉強になりました。まさにvimgolf。最初にステップ2の< ESC>i と読んだとき「< esc>hiの間違いだな。」と先入観をもって読んでしまったのですが、よく考えてみるとiはカーソルの前に挿入ですね。これで1打 節約できます。これは完全に多用するでしょう。これは勉強になりました。
@Sa2Knight さん、
Townk/vim-autocloseを検索してみたいと思います。けど、当分は使わないで、< ESC>i と kota9さんの書いた、inoremapで自分に合ったコンビネーションを探したいと思います。