Warming Up

まずはウォーミングアップです😉 少しずついきます。

keymap

まずは12. Key Bindingで触れたkeymapから呼び出してみましょう。

:h keymap.set

set({mode}, {lhs}, {rhs}, {opts})                           vim.keymap.set()
    Parameters:
      • {rhs}   string|function Right-hand side |{rhs}| of the mapping. Can
                also be a Lua function.

                マッピングの右辺|{rhs}|。Luaの関数でも可。

ちょっと動かしてみたいだけ (あとで削除する前提) なのでどこでもいいんですが、まあkeybinds.luaで進めます。

ヘルプの中にあったコードそのままですが、入れてみてください。

Example

vim.keymap.set('n', 'lhs', function() print("real lua function") end)

source

いきなり少し寄り道します。

ここで初めて登場するんですが、:sourceというコマンドがありまして...🤔

:h source

            :so :source load-vim-script
:[range]so[urce] [file]	Runs |Ex| commands or Lua code (".lua" files) from
                             |Ex|コマンドまたは Lua コード (".lua" ファイル) を [file] から実行する。

      [file], or current buffer if no [file].
      [ファイル] を実行する。[ファイル] がない場合は、現在のバッファを実行する。

例えば、これまだ上のコードを入れてない状態なんですけど、一回:mapを見てみます。

source1

で、コード追加してセーブするじゃないですか。

source2

で、

Command

:so

または

:source
source3

そしたらもう一回:mapを見てみます。

source4

あ、lhsいる😮

ヘルプが言っているところの「現在のバッファを実行する」がちゃんと動いてますね。 keybinds.luaのバッファで:soを実行しているのでkeybinds.luaが実行されてます😉

気をつけないといけないのは、これが "リフレッシュ" とか "再起動" ではなくて、あくまでも実行であることです。 あんまり自信が無いんですけど、keymapの変更についてはちゃんと反映されてるようです。

..."については"と言っているのは、ちょっと気にしておきたいことがあって...。 意味なく引っ張るようなんですが、14.4 Call The Pluginで改めて触れたいと思ってます😌

Tip

ちなみに言うと、この辺りが恐らくaugroupclearの話だと思うんですが、どうでしょう❓

実行

本題に戻って、ノーマルモードでlhsと入力してみましょう。

call-function1

...動きましたね❗

Warning

動くことが確認できたら、このコードはすぐ消しときましょう😅

じゃないと、ノーマルモードのカーソル移動 (l) が挙動不審になっちゃうので❗

(ぶっちゃけサンプルが不親切だと思う...🤫)

Leader キーを使った Keymap

前項みたいなことがあるので、13.Leader Keyで設定したLeaderキーを積極的に使っていきましょう😆

vim.keymap.set('n', '<Leader>l', function() print('Leader key worked too.') end)
call-function2

これなら安心ですね❗

Wrap Up

Success

キー操作に機能(function)を割り当てて実行できましたね🤗

ではウォーミングアップも済んだので、functionを掘り下げていきます。