vimで矢印キーを無効にする方法は?


24

ホーム行にとどまるために、矢印キーを使用するよりもhjklを使用して自分自身を教えたいです。はい、メインナビゲーションキーとしてhjklを使用しないでください。しかし、私の習慣は非常に強く、それが矢印キーへの手の動きを引き起こしたことに気づいてさえいないので、それを学ぼうと思います。

その習慣を打破するには:どうすればhjklまたは他のナビゲーション方法を使用せざるを得ないように矢印キーを無効にできますか?

ボーナスとして、それがDont't use this!必須ではないというメッセージがまだ表示されている場合に役立ちます。それらが機能しない場合、それは私が私の習慣を再考するのに十分混乱させるでしょう。


4
それを行う意味はまったくありません。HJKLは矢印と同じくらい吸い込みます。
ロメインル

6
@romainlは、vimの強力な動きw次の単語、}次の段落、n次の検索結果の一致、現在の行のfz次の出現zなど)の使用に焦点を合わせることがより重要であると指摘していると思います単一文字できめ細かく。私は間違いなくこれに同意します。ただし、HJKLはホームキーから手を動かす必要がないという点で、矢印キーよりも間違いなく優れています。のようなものを頻繁に入力しますがjA、これはの場合よりもはるかに高速で<Down>A、どのモーションでも実際には打てません。
wchargin

4
@romainl:以前にこの議論をしたと思います。非ヴィマーは矢印に使用され、HJKLには使用されません。理想的にはどちらも使いたくない。ただし、HJKLではなく矢印をブロックすると、人々は一時停止し、自分のやっていることを反映します(実際に最良の選択肢である場合、またはユーザーがそれを行う方法に困惑している場合は、代替としてHJKLを開いたままにします)より強力なモーション。)。つまり、HJKLを学習することではなく、他のエディターで学習した自動化をブロックすることです。
アマダン

1
@Carpetsmoker間違いなくhjklキーの利点は、ホーム行を離れる必要がないことです。矢印キーの場合、手はキーボード上を移動する必要があります。
k0pernikus

1
@Carpetsmokerそれは確かに私にとって気分が良いです。;)
k0pernikus

回答:


24

ハードモードプラグインをインストールして.vimrc

let g:HardMode_level = 'wannabe'
let g:HardMode_hardmodeMsg = 'Don''t use this!'
autocmd VimEnter,BufNewFile,BufReadPost * silent! call HardMode()

あなたがプラグインを使用したくない場合は、使用(あなたはすべてを自分でカスタマイズしてもらうよう、より良い選択かもしれません!) nnoremapvnoremapそしてinoremap<Left><Right><Up><Down><PageUp>および<PageDown>、例えば:

nnoremap <Left> :echo "No left for you!"<CR>
vnoremap <Left> :<C-u>echo "No left for you!"<CR>
inoremap <Left> <C-o>:echo "No left for you!"<CR>

1
<nop>キーマップを完全に無効にする場合もありますnnoremap h <nop>
akshay

25

あなた、またはこのトピックを読んでいる誰かが、テキスト警告なしでキーの動きを無効にしたい場合は、.vimrcに次の行を入力してください。

noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>

コマンドは、通常モードでのみキーの移動を無効にします。挿入モードでも機能します。inoremapを使用すると、矢印の動きも挿入モードから削除されます。

このinoremapなどnoremap、nnoremap、間の違いと超人気話題のお得な情報:Vimの中での再マッピング

再マッピングの一般的な考え方は次のとおりです。

Choice-of-mode-to-remap <remap this command> <to this action/command instead>

したがって、他の例では、左側のコマンドをテキストプロンプトに再マップし、実際にカーソルを移動するアクションを偶発的に削除します。上記の例は、アクションが他の何かではなく、何もしないように単純に再マップします。vim機能を置き換えるのではなく、削除することを検討してください。


2

これをに追加して.vimrc、コマンド、挿入、ノーマル、ビジュアルモードの矢印キーを無効にすることができます。

" Remove newbie crutches in Command Mode
cnoremap <Down> <Nop>
cnoremap <Left> <Nop>
cnoremap <Right> <Nop>
cnoremap <Up> <Nop>

" Remove newbie crutches in Insert Mode
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>
inoremap <Up> <Nop>

" Remove newbie crutches in Normal Mode
nnoremap <Down> <Nop>
nnoremap <Left> <Nop>
nnoremap <Right> <Nop>
nnoremap <Up> <Nop>

" Remove newbie crutches in Visual Mode
vnoremap <Down> <Nop>
vnoremap <Left> <Nop>
vnoremap <Right> <Nop>
vnoremap <Up> <Nop>

注::help map-overviewさまざまなタイプのマッピングの詳細については、チェックアウトしてください


1
noremap ... ...(通常モード、視覚モード、選択モード、オペレーター保留モードの場合)およびnoremap! ... ...(挿入モードおよびコマンド行モードの場合)を使用して、必要なコマンドの数を減らすことができます。
ユルゲンクレーマー

本当です。noremaps影響を受けるモードをカスタマイズしたい人にとって、より明示的な方が役立つと思いました
NonlinearFruit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.