vimが提供する優れたモーションやテキストオブジェクトを頻繁に使用しないので(そして、"Holding down 'j' is a vim anti-pattern,"以降)、私はvimにトレーニングの援助をしてhjkl
複数回続けてvimでhjklの移動キーを繰り返し使用するのを防ぐ
私がvimの使用を開始したとき、私はhjkl
を使って移動しませんでしたが、代わりに矢印キーを使用することに腹を立てました。これをしないように思い出して、私は矢印キーを使用して自分自身を使用しないように再マップ - 私は移動するために家の列を使用することが良い長期計画になることを知っていたので、私は働くことによって得るだろう積極的な強化キー。
map <left> <nop>
map <right> <nop>
# I quickly removed nop's for up and down because using
# the mouse wheel to scroll is sometimes useful
これは非常によく働いていたので、私はもはや私の.vimrcにこれらのマッピングを必要としない、と私はすぐにそれを行うための意識的な努力をしなくても、切り替えます。同様のやり方で、私は基本的な移動キーの繰り返し使用を中断したいと思っています。hjkl
私はこのような何か想像した
let g:last_mov_key = 'none'
let g:times_mov_key_repeated = 0
function! MovementKey(key)
if (g:last_mov_key == a:key)
let g:times_mov_key_repeated = g:times_mov_key_repeated + 1
else
let g:last_mov_key = a:key
let g:times_mov_key_repeated = 0
endif
if g:times_mov_key_repeated > 3
echo "Negative Reinforcement!"
endif
endfunction
noremap j :call MovementKey('j')<CR>gj
noremap k :call MovementKey('k')<CR>gk
noremap h :call MovementKey('h')<CR>h
noremap l :call MovementKey('l')<CR>l
をしかし、これはビジュアルモードで壊し、そして私はそれがいけない何かの途中でvimのコマンドラインを使用して状態を変更する他の例トンに想像してみてください。もっと複雑な動きを使わなければならないのはどうしたらいいですか?
編集:質問は、明確にするために最初の2つの回答の後に編集され、段落は並べ替えられています。私はvimがromainlの "レベル0"を超えて動いていくことを願っています。今のところ答えは私に時間を無駄にしないよう助言しますが、私がインセンティブを変えるために自分の環境を変えて自分の習慣を変える学習テクニックのファンだとすればどうでしょうか?このモデルでは、ページをスクロールするなどのタスクを実行したいと思います。そのタスクを達成するまで、多かれ少なかれランダムにキーの組み合わせを試みます。私の脳内のドーパミンシグナル伝達などは、最終的にこの結果を達成する行動を強化するでしょう。私はhjkl
を使わないことを覚えていることに焦点を当てることができました。あるいは、もともとやっていた作業に焦点を当てて、テキストを編集して、より効率的な編集テクニックを使って自分自身を見つけ出すことなく、
'mouse = a'レコード設定では、Up/Downをにマッピングできます。まだスクロールホイールが動作しています(必要な場合はマウスを選択することもできます)。 –
Holloway