web-dev-qa-db-ja.com

VimでEscapeの代わりにCapsLockを使用する方法

地図を作成したい CapsLock に Escape。どう表現するか CapsLock.vimrc

スペースをコマンドにマップすることを知っているので、次のようにします。

:map <space> viw

どのようにマッピングしますか CapsLock に Escape レジストリハックをせずに-私はVimコマンドを探していますか?

ハックや追加のソフトウェアなしではそれが不可能な場合は、ショートカットを割り当てたいと思います jj に ESC.vimrc。私は現在これをやっています:

inoremap jj <esc>

ただし、ビジュアルモードの場合、これは機能しません。どうすれば作れますか jj エスケープキーをエミュレートしますか?

6
Rajeshwar

マッピングできないと思います CapsLock Vim内から。 setxkbmap を使用してX内で再マッピングします。

setxkbmap -option caps:swapescape

コンソールでの再マッピングの場合、ディストリビューションでsystemdを使用している場合、 Arch Wiki で説明されているように、/etc/vconsole.confでカスタムキーボードレイアウトを使用できます。他の初期化システムについては、 このU&L回答 を参照してください。

9
jasonwryan

Vimの起動時にxmodmapへの呼び出しを使用して、CapslockをEscapeにマップできます。 Vimを終了すると、変更を元に戻すことができます。次の行を.vimrcに追加します。

au VimEnter * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
au VimLeave * silent! !xmodmap -e 'clear Lock' -e 'keycode 0x42 = Caps_Lock'

ただし、複数のVimセッションがある場合、これにより問題が発生します。それらの1つを閉じると、xmodmapはグローバルに動作するため、すべての変更が元に戻ります。

0
finefoot

inoremapは、挿入モードの非再帰的マップを意味します。 vnoremapは、ビジュアルモードの非再帰的マップです。そう vnoremap jj <esc>はあなたが欲しいものです。

0
Jason Basanese