例えば、.vimrc
で次のようなキーマップ設定があったとします。
nmap <Leader>a :echo "Hello"<CR>
nmap <Leader>b :echo "World"<CR>
これは、Leader キーに続けて a
キーや b
キーを入力することで、Hello
や World
と表示するキーコンビネーションを定義しています。
つまり、Leader キーはキーコンビネーションのためのプレフィックスキー です(実際には任意の位置で使えますが)。
デフォルトでは、Leader キーはバックスラッシュ (\
) に割り当てられているため、\a
と入力することで Hello
と表示されることになります。
次のように直接バックスラッシュキー (<Bslash>
) を使って定義するのとは何が違うのでしょうか?
nmap <Bslash>a :echo "Hello"<CR>
nmap <Bslash>b :echo "World"<CR>
Leader キーを使ったキーマッピングには、次のような利点があります。
.vimrc
を公開するとき).vimrc
設定を使いまわしやすい(自分の好きな Leader キーで使える)Leader キーを任意のキーに設定するには、次のように mapleader
変数を設定します。
デフォルトではバックスラッシュキーが使用されますが、決して押しやすいキーではないので、スペースキーやカンマを Leader キーとして使用する人が多いようです。
let mapleader = "\<SPACE>"
let mapleader = ","
mapleader
変数は、nmap
や nnoremap
などのキーマッピング設定で <Leader>
を参照する前に定義しておく必要があります。
mapleader
変数を設定する前に <Leader>
を参照すると、デフォルトのバックスラッシュキーに置き換えられます。
ちなみに、ノーマルモードのスペースキーには、デフォルトでは L
キーと同じ振る舞い(カーソルを右へ移動させる)が割り当てられています。
Leader キーをスペースキーに割り当てた場合でも、スペースキーを押してから 1 秒間放置することで、このデフォルトの振る舞いを実行することができます。
" タブの切り替え
nnoremap <Leader>h :<C-u>tabprev<CR>
nnoremap <Leader>l :<C-u>tabnext<CR>
" NERDTree 用のキーマップ
nnoremap <Leader>nt :<C-u>NERDTreeToggle<CR>
nnoremap <Leader>nf :<C-u>NERDTreeFind<CR>
<Leader>
は小文字で <leader>
と記述することもできます。
次のようにして Leader キーの現在の割り当てを調べることができます。
:echo mapleader
何も設定されていない場合(デフォルトでバックスラッシュキーが割り当てられている場合)は、次のようなエラー表示になります。
E121: Undefined variable: mapleader
E15: Invalid expression: mapleader
Leader キーにスペースキーが割り当てられている場合は、空白文字が出力されるので、実際には何も表示されていないように見えます。
VS Code (Visual Studio Code) の Vim プラグインでも、Leader キーの設定ができます。
"vim.leader" : "<space>", // Leader キーの設定