いつまで経ってもカーソル操作を矢印キーでやってしまう軟弱者にファイルを編集する資格なんて無かった
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>
キビシイ![:cold_sweat: :cold_sweat:](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAt1BMVEVMaXH/zEzU17jZ1avM2c3C2+fqz3yis63izY7G2tzR2MD9yUv/zEz/zE1crexdrezc1qT/y0z/zE3X17LW1rX/zE1drOz/zEzc1aRcrez/zExcrOtdrex3VAicdBrwv0WFYA/RpDbpuUJqsN+GtcSuvZ23jSjIwoOvhSSQahW93fRmRQC+3O61ztxvVht+bkL0z2t2YS2copWLhmj4zFeswMWWmYbq0HttTAX/zE3Z1q7R2cTj1JadGkzpAAAAHHRSTlMA67Fq6f4Z/gn4y/tcbt1SOjnPlaCvpoqEhbjJ7wSd4gAAA3ZJREFUeAGllIViIzsMRRUYDjNz09Z2mOH/v+tNPPE6o8H6naU2cs9eyQAxmLmGnbcsjTHNsvJ2I2eCApVsnhGEls9W4E/o9TyJIF8302uyGolBs3VIgxmmQapsilQ5i6TAyiXFsUlK7NhQFYukxqrEtMXIH9Ai2+sgTxKsDqE0yJ9phOYhCtST52Os1wYhSZ+xDiAqyMPWlK6xyP3sukITR3tn4n3f03AR3eBTYPpE+ByuXj9zIEF78FPbNyDs2VHeBWbDTWgKuejGTmvqckYWEZRuVlHNZf2rD5SiYaD/4nrwqbLCo2tiq1Yn47CjnoeRKBMvn08rsULT/YGMNZWgQUhWG7lobfgimZrYXLwinP1arvNFqhMk2u0ZLz/uz8t2ezzebsfjdnt53h+aN4HzToh8NyVP/rV2XW8O+9VLcn9ubyFsn3cuO503u6sMnueXg2C0O5IgmevCVPDeuzwut0QuD+In++5MwsOMR9fraBwikJXtnXySF3sm0vCeZkPqMpwhCapsP1Np5uc1095NTShngjW4ctE+L1xDxjl69Sl9M8UeXDnKUA35gDzF8pFYPsKiYOUpLoAtZs3kXg3F8iHyhFUuTEzb8sazlcuvYvkVeUIrW29Qlidi0pNeJEzME3HhJb6B+MqFtwRMzllh2Jznq6eX6BG/ycmVx0uk+QeU/kD6x6SBhRpLd0UQ99eusWP01UxbOTIL8vf314uFMCpwz4P9ntBiMFioi7Y2dG6cr4HLl7qpA1XvUA04F2VRFSDjNcZRbi4DAE333+/Bm29FUdMVFd0dmwvRXHHniq5I55MW4HmPl7/D63X4uxzHinRw6clAOJLzI1+OHyfa04MXBRkIRZpN6AeTWaSowEW6CIQjjYfUxzCqvYzJRV3hQJGcCUVMnKhRc0p+0VyUlzTAMi5QWRjQWRpfg6LrOCZQC3nE8f6hIfyEeGpeIHMQ4Che+uFoOZ2NHXdc49l0OXp9EnrNUGeot99J8M2e/AY9bUCdSYxbArgxTh9Z/vgGZHQAvPn4AKTBqYJgoCBCd0M1Efb8/2E7whO//YlkquCjpNhZTQc/ZbVAbRMwXYUJ1VBbIaauWcwkTqcI4ZT/zalUBoAEVQZ35VO1Sq6lVQYPs9CLfOcLWJOAXmwGcmWaRR1UqBbazVot4ziZWq3ZLlQhhv8Ab0gEGf/HRv0AAAAASUVORK5CYII=)
あるある
挿入モードで移動するときはどうしてます? 挿入モードで< 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で自分に合ったコンビネーションを探したいと思います。