[第3回] Neovimのすゝめ – キーマップを作成する

[第3回] Neovimのすゝめ – キーマップを作成する

連載

本記事は複数記事の連載記事の1つです。

キーマップを設定する

設定ファイルにキーマップを定義することで自由に設定できます。
Normal, Insert, Visualの3つのモードの他、組み合わせやコマンドライン、ターミナル時のマッピングをそれぞれセットできます。

マップモード (:h map-overview)

COMMANDS                    MODES ~
:map   :noremap  :unmap     Normal, Visual, Select, Operator-pending
:nmap  :nnoremap :nunmap    Normal
:vmap  :vnoremap :vunmap    Visual and Select
:smap  :snoremap :sunmap    Select
:xmap  :xnoremap :xunmap    Visual
:omap  :onoremap :ounmap    Operator-pending
:map!  :noremap! :unmap!    Insert and Command-line
:imap  :inoremap :iunmap    Insert
:lmap  :lnoremap :lunmap    Insert, Command-line, Lang-Arg
:cmap  :cnoremap :cunmap    Command-line
:tmap  :tnoremap :tunmap    Terminal

マップテーブル (:h map-table)

         Mode  | Norm | Ins | Cmd | Vis | Sel | Opr | Term | Lang |
Command        +------+-----+-----+-----+-----+-----+------+------+
[nore]map      | yes  |  -  |  -  | yes | yes | yes |  -   |  -   |
n[nore]map     | yes  |  -  |  -  |  -  |  -  |  -  |  -   |  -   |
[nore]map!     |  -   | yes | yes |  -  |  -  |  -  |  -   |  -   |
i[nore]map     |  -   | yes |  -  |  -  |  -  |  -  |  -   |  -   |
c[nore]map     |  -   |  -  | yes |  -  |  -  |  -  |  -   |  -   |
v[nore]map     |  -   |  -  |  -  | yes | yes |  -  |  -   |  -   |
x[nore]map     |  -   |  -  |  -  | yes |  -  |  -  |  -   |  -   |
s[nore]map     |  -   |  -  |  -  |  -  | yes |  -  |  -   |  -   |
o[nore]map     |  -   |  -  |  -  |  -  |  -  | yes |  -   |  -   |
t[nore]map     |  -   |  -  |  -  |  -  |  -  |  -  | yes  |  -   |
l[nore]map     |  -   | yes | yes |  -  |  -  |  -  |  -   | yes  |

マッピング例

以下のようにモード、マッピングするキー、マッピングする操作を記載します。
noremapやsilent等のオプションは第4引数で指定します。

-- leave insert
api.nvim_set_keymap('i', 'jk', '<esc>', { noremap = true })
-- cursor move
api.nvim_set_keymap('n', '<S-j>', '5j', { noremap = true, silent = true })
api.nvim_set_keymap('n', '<S-k>', '5k', { noremap = true, silent = true })
api.nvim_set_keymap('v', '<S-j>', '5j', { noremap = true, silent = true })
api.nvim_set_keymap('v', '<S-k>', '5k', { noremap = true, silent = true })
-- save file
api.nvim_set_keymap('n', '<leader>w', '<cmd>update<cr>', { noremap = true })

leaderキーについて

leaderキーのデフォルトは \ ですが、スペースキー等の押しやすいキーへの割り当て変更をお勧めします。

-- スペースキーにleaderキーを割り当てる ※<space>ではなく半角スペースをそのまま入力する
vim.g.mapleader = ' '

修飾キーについて

Ctrlキーの組み合わせは、<C-*>と指定します。
Ctrl+aであれば、 <C-a> です。

Shiftキーの組み合わせは、大文字で指定します。
Shift+aキーであれば、 A です。

Altキーの組み合わせは、 <M-*> と指定します。

Neovimのすゝめカテゴリの最新記事