Leader Key

前章でキーマップをやったので、この章ではLeaderキーを設定しておきましょう。

nvim_set_var

突然ですが、ここでニューヒーローをお迎えします❗その名もnvim_set_var❗😆

:h nvim_set_var

nvim_set_var({name}, {value})       nvim_set_var()
  Sets a global (g:) variable.

  グローバル(g:)変数を設定する。

  Parameters:
    • {name}   Variable name
    • {value}  Variable value

すごくシンプル❗かぁっくいー❤️

章のタイトル飾れるだけの力があるのに、なんか無理やりの登場となってしまいました😅

...ただ、この後も出番はかなり限られてくると思われます。

能力の高さゆえ、守備範囲が広大すぎて地球だけに居られない Captain Marvel 1みたいですね❗

Tip

これは10章に入れるかどうか悩んだところですが、

vim.api.nvim_set_var('loaded_python3_provider', 0)

のような使い方もできます。

(ここでは中身に触れないんですが) これから環境構築するぞー❗ ...って時にやる設定ではないなー🤔と思ったので登場しませんでしたが、 一通り構築が終わったら改めて登場する予定です。たぶん。

ん⁉️ やっぱり、Endgame だろうがなんだろうが遅れてやってくる Captain Marvel みたいですね❗

Note

これ、本題と全然関係ないけど、へぇ〜😮ってなるやつ。

John Lennon が "The Continuing Story Of Bungalow Bill - The Beatles (White Album)" の歌詞に入れてたり、 Disney+ の "The Beatles: Get Back" の中で発言してたりする「Captain Marvel」って、Shazam2のことらしいよ😉

(※ このサイトでは Brie Larson のイメージだけで進んでます。)

mapleader

:h mapleader

                  <Leader> mapleader
To define a mapping which uses the "g:mapleader" variable, the special string
"<Leader>" can be used.  It is replaced with the string value of
"g:mapleader".  If "g:mapleader" is not set or empty, a backslash is used
instead.

変数 "g:mapleader "を使用するマッピングを定義すると、"<Leader>"という特殊な文字列を使用することができる。
これは "g:mapleader "の文字列値と置き換えられる。

g:mapleader "が設定されていない場合や空の場合は、代わりにバックスラッシュが使われる。

Vim scriptの書き方だと思われますが、g:というのがglobalで、mapleaderが変数名ですね 🤔

これはなんかもうnvim_set_varが強すぎるので楽勝です❤️

keybinds.lua

vim.api.nvim_set_var('mapleader', '\\')

Note

例がややこしくなってしまいましたが、 1文字目の\エスケープシーケンスとして入っているものなので、\(2文字目) だけが設定されます。

上の例はデフォルトと同じ\になっていますが、ここを好きなキーに変えることができます。

Tip

WezTermの時にも挙げましたが、メジャーなのはこの辺でしょうか😌

スペースを入れてます。:mapではないからっていう理屈だと思うんだけど<Space>だとうまくいかない。

vim.api.nvim_set_var('mapleader', ' ')

メジャーなんだけど、,Neovimがデフォルトで機能を割り当てていることに注意。 vim.keymap.setで他のキーに,を割り当てるなど、少し考慮が必要。

vim.api.nvim_set_var('mapleader', ',')

2文字以上を入れても良いみたいなので、何か可能性があるような無いような。

vim.api.nvim_set_var('mapleader', 'map')

Neovimは単独で使用するキーを指定します。(WezTermCtrlキーと同時押しするキーを指定していました。)

なので「SpaceキーにするとOSのショートカットと被っちゃうかもよ ❗」ということは無いです。

ただ、例えば,にしちゃうとNeovimの中で被ってるよって話が出てきちゃったりします😧

わたしは最近まで,で使用していましたが、そこまで使用頻度が高いわけでもなかったので\に戻しました。 US配列であれば、ゆーてReturnキーの上ってだけですからね😅

(配列は勿論、形状とかも含めて、使用するキーボードに依るので一概には言えないんですけどね。)

Note

ここで言いたいのは、「変えた方がいいよー」って人もいるんだけど、「変えてない人もいるよー」ってことです。 自由ってことです。

Tip

leaderキーの確認はコマンドからできます。

:echo mapleader
leader

設定前に実行するとエラーが出てしまいますが、特に害はありません。

maplocalleader

NeovimにはLocal Leaderというものもあります。

keybinds.lua

                    <LocalLeader> maplocalleader

<LocalLeader> is just like <Leader>, except that it uses "maplocalleader"
instead of "mapleader".  <LocalLeader> is to be used for mappings which are
local to a buffer.

 <LocalLeader> は <Leader> と同じであるが、"mapleader" の代わりに "maplocalleader" を使用する点が異なる。
 <LocalLeader> は、バッファにローカルに存在するマッピングに使用される。

In a global plugin <Leader> should be used and in a filetype plugin
<LocalLeader>.  "mapleader" and "maplocalleader" can be equal.  Although, if
you make them different, there is a smaller chance of mappings from global
plugins to clash with mappings for filetype plugins.  For example, you could
keep "mapleader" at the default backslash, and set "maplocalleader" to an
underscore.

global プラグインでは <Leader> を、filetype プラグインでは <LocalLeader> を使用する。
"mapleader" と "maplocalleade " は同じでも構わないが、
別にしておけばグローバルプラグインのマッピングとファイルタイププラグインのマッピングが衝突する可能性が低くなる。

例えば、"mapleader "をデフォルトのバックスラッシュのままにして、"maplocalleader "をアンダースコアに設定する。

こっちはなんか_がメジャーらしい...🤔

keybinds.lua

vim.api.nvim_set_var('maplocalleader', '_')

もちろんmapleaderと同じように、好きなキーを割り当てられます。

プラグインを使い出すと爆発的に機能が増えるので、mapleaderとは別のキーを設定しておくのが良いと思います。 (単純に考えて、ショートカットの組み合わせが 2 倍に増えるので。)

ただ、あくまでも必須ではないです。mapleaderと違って、こちらはデフォルトでも設定されていません。

Tip

これもやっぱりコマンドから確認ができます。

:echo maplocalleader

これも設定前に実行するとエラーが出てしまいますが、やっぱり害はありません。

Wrap Up

Success

リーダーキーはこんなもんかな☺️

あともうひとつだけ章を挟んだら、いよいよプラグインが登場します。 これもやっぱり「もう嫌❗🙀」ってなるぐらいLeaderキーに触れられます。

ドキドキ...❗

LEADER KEY AND CAPTAIN MARVEL WILL RETURN

リーダーキーとキャプテン・マーベルは帰ってくる