はじめに
Neovimのプラグインで私がよく使うキーマップを紹介します。
Vim版は こちら です。
環境
- macOS: Ventura 13.5.2(22G91)
- Neovim: v0.10.0-dev-1336+g9c2270b83
注意
- 表の見やすさを優先して
noremap を省略している
- 「カスタマイズ」は私が使いやすいように変更している
- 私は
<Leader> を , にしている
- わからない説明は先頭に「(?)」を付けている
Neovimのプラグインでよく使うキーマップ一覧
Neovimのプラグインでよく使うキーマップの一覧です。
ノーマル
ノーマルモード( n )でよく使うキーマップの一覧です。
nvim-treesitter-context
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 前方のコンテキストにジャンプする |
function() require('treesitter-context').go_to_context() end |
[c |
context |
Todo Comments
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 後方のキーワードにジャンプする |
function() todo_comments.jump_next { keywords = { 'FIXME', 'TODO' } } end |
]t |
todo |
| 前方のキーワードにジャンプする |
function() todo_comments.jump_prev { keywords = { 'FIXME', 'TODO' } } end |
[t |
todo |
LSP
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 次の指摘へ進む |
vim.diagnostic.goto_next |
g] |
|
| 前の指摘へ戻る |
vim.diagnostic.goto_prev |
g[ |
|
| 指摘を一覧表示する |
vim.diagnostic.setloclist |
gl |
|
| (?)宣言へジャンプする |
vim.lsp.buf.declaration |
gD |
|
| 定義へジャンプする |
vim.lsp.buf.definition |
gd |
|
| 情報を表示する |
vim.lsp.buf.hover |
K |
|
| (?)実装へジャンプする |
vim.lsp.buf.implementation |
gi |
|
| (?)シグニチャのヘルプを表示する |
vim.lsp.buf.signature_help |
<C-k> |
|
| ワークスペースに現在のフォルダを追加する |
vim.lsp.buf.add_workspace_folder |
gwa |
|
| ワークスペースから現在のフォルダを取り除く |
vim.lsp.buf.remove_workspace_folder |
gwr |
|
| ワークスペースを出力する |
function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end |
gwl |
|
| 型の定義へジャンプする |
vim.lsp.buf.type_definition |
gt |
|
| リネームする |
vim.lsp.buf.rename |
gn |
|
| 指摘に対するアクションの候補を表示する |
vim.lsp.buf.code_action |
ga |
|
| 参照している箇所を一覧表示する |
vim.lsp.buf.references |
gr |
|
| ファイル全体をフォーマットする |
function() vim.lsp.buf.format { async = true } end |
gf |
|
| インレイヒントの表示を切り替える |
function() vim.lsp.buf.inlay_hint(bufnr) end |
gh |
hints |
| バーチャルラインの表示を切り替える |
function() local new_config = not vim.diagnostic.config().virtual_lines vim.diagnostic.config { virtual_lines = new_config } end |
gK |
|
| ドキュメントカラーの表示を切り替える |
function() vim.lsp.document_color.enable(not vim.lsp.document_color.is_enabled(bufnr), bufnr, { style = ' ' }) end |
<Leader>c ( ,c ) |
color |
| インラインの補完を確定する |
function() if not vim.lsp.inline_completion.get() then return '<C-g>' end end |
<C-g> |
|
LSP関連のキーマップはほぼ g をプリフィックスにしています。
Neovim 0.8.0から vim.lsp.buf.formatting が非推奨になったので、代わりに vim.lsp.buf.format { async = true } を使っています。
参考
lsp-lens.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 表示を切り替える |
<Cmd>LspLensToggle<CR> |
gs |
|
telescope
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| Gitリポジトリ内のファイルを検索する |
require('telescope.builtin').git_files |
<Leader>F ( ,F ) |
find |
| グレップする |
require('telescope').extensions.egrepify.egrepify |
<Leader>f ( ,f ) |
find |
| カーソル下の単語でグレップする |
require('telescope.builtin').grep_string |
<Leader>G ( ,G ) |
grep |
| バッファを検索する |
require('telescope.builtin').buffers |
<Leader>b ( ,b ) |
buffers |
| 過去に開いたファイルを検索する |
require('telescope').extensions.frecency.frecency |
<Leader>r ( ,r ) |
recently |
| コマンド履歴を検索する |
require('telescope.builtin').command_history |
<Leader>hc ( ,hc ) |
history command |
| 検索履歴を検索する |
require('telescope.builtin').search_history |
<Leader>hs ( ,hs ) |
history search |
| ヘルプを検索する |
require('telescope.builtin').help_tags |
<Leader>H ( ,H ) |
help |
| 通知の履歴を検索する |
<Cmd>Telescope notify<CR> |
<Leader>n ( ,n ) |
notify |
| Gitのコミット履歴を検索する |
require('telescope.builtin').git_commits |
<Leader>gc ( ,gc ) |
git commits |
| バッファのGitのコミット履歴を検索する |
require('telescope.builtin').git_bcommits |
<Leader>gf ( ,gf ) |
git file |
| Gitのブランチを検索する |
require('telescope.builtin').git_branches |
<Leader>gb ( ,gb ) |
git branches |
| Gitのステータスを検索する |
require('telescope.builtin').git_status |
<Leader>gs ( ,gs ) |
git status |
| Gitのスタッシュを検索する |
require('telescope.builtin').git_stash |
<Leader>gt ( ,gt ) |
git stash |
| ghqで管理しているリポジトリを検索する |
<Cmd>Telescope ghq list<CR> |
<Leader>gl ( ,gl ) |
ghq list |
| 追加できるimport文を検索する |
<Cmd>Telescope import<CR> |
<Leader>i ( ,i ) |
import |
telescopeのファジーファインダー(あいまい検索)はよく使うので、かんたんなキーマップにしています。
ssr.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| ストラクチュアルサーチする |
require('ssr').open |
<Leader>sr ( ,sr ) |
structual search and replace |
text-case.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| カーソル下の単語の変換するケースを検索する |
<Cmd>TextCaseOpenTelescope<CR> |
cr. |
|
| カーソル下の単語をアッパーケースに変換する |
require('textcase').current_word('to_upper_case') |
cru |
upper case |
| カーソル下の単語をローワーケースに変換する |
require('textcase').current_word('to_lower_case') |
crl |
lower case |
| カーソル下の単語をスネークケースに変換する |
require('textcase').current_word('to_snake_case') |
crs |
snake case |
| カーソル下の単語をダッシュケースに変換する |
require('textcase').current_word('to_dash_case') |
crd |
dash case |
| カーソル下の単語をコンスタントケースに変換する |
require('textcase').current_word('to_constant_case') |
crn |
constant case |
| カーソル下の単語をキャメルケースに変換する |
require('textcase').current_word('to_camel_case') |
crc |
camel case |
| カーソル下の単語をパスカルケースに変換する |
require('textcase').current_word('to_pascal_case') |
crp |
pascal case |
| カーソル下の単語をすべてアッパーケースに変換する |
require('textcase').lsp_rename('to_upper_case') |
crU |
upper case |
| カーソル下の単語をすべてローワーケースに変換する |
require('textcase').lsp_rename('to_lower_case') |
crL |
lower case |
| カーソル下の単語をすべてスネークケースに変換する |
require('textcase').lsp_rename('to_snake_case') |
crS |
snake case |
| カーソル下の単語をすべてダッシュケースに変換する |
require('textcase').lsp_rename('to_dash_case') |
crD |
dash case |
| カーソル下の単語をすべてコンスタントケースに変換する |
require('textcase').lsp_rename('to_constant_case') |
crN |
constant case |
| カーソル下の単語をすべてキャメルケースに変換する |
require('textcase').lsp_rename('to_camel_case') |
crC |
camel case |
| カーソル下の単語をすべてパスカルケースに変換する |
require('textcase').lsp_rename('to_pascal_case') |
crP |
pascal case |
gitlinker.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 対象行のGitリポジトリをWebブラウザで開く |
require('gitlinker.actions').open_in_browser |
<Leader>go ( ,go ) |
git open in browser |
dropbar.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| ピックモードに入る |
require('dropbar.api').pick |
<Leader>p ( ,p ) |
pick |
symbols-outline.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| シンボルアウトラインの表示を切り替える |
<Cmd>SymbolsOutline<CR> |
<Leader>s ( ,so ) |
symbols outline |
git-conflict.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 自分の変更を適用する |
co |
- |
<Cmd>GitConflictChooseOurs<CR> |
| 相手の変更を適用する |
ct |
- |
<Cmd>GitConflictChooseTheirs<CR> |
| 変更を両方とも適用する |
cb |
- |
<Cmd>GitConflictChooseBoth<CR> |
| 変更を両方とも適用しない |
c0 |
- |
<Cmd>GitConflictChooseNone<CR> |
| 次の競合へジャンプする |
[x |
- |
<Cmd>GitConflictNextConflict<CR> |
| 前の競合へジャンプする |
]x |
- |
<Cmd>GitConflictPrevConflict<CR> |
ugaterm
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| ターミナルの表示を切り替える |
<Cmd>UgatermToggle<CR> |
<Leader>t ( ,t ) |
terminal |
peek.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| WebViewでプレビューを開く |
require('peek').open |
<C-p> |
preview |
挿入
挿入モード( i )でよく使うキーマップの一覧です。
nvim-cmp
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 前の候補に移動する |
<Down> |
- |
|
| 前の候補に移動する |
<C-p> |
- |
previous |
| 前の候補に移動する |
- |
<S-Tab> |
|
| 次の候補に移動する |
<Up> |
- |
|
| 次の候補に移動する |
<C-n> |
- |
next |
| 次の候補に移動する |
- |
<Tab> |
|
| (?)候補を4つ前にスクロールする |
- |
<C-b> |
back、なぜか効かない |
| (?)候補を4つ後ろにスクロールする |
- |
<C-f> |
forward、なぜか効かない |
| (?)補完を確定する |
- |
<C-l> |
completion、なぜか効かない |
| 補完を確定する |
<C-y> |
- |
|
| 補完を確定する |
- |
<CR> |
|
| 補完せずに閉じる |
<C-e> |
- |
exit |
参考
ビジュアル、選択
ビジュアル、選択モード( v )でよく使うキーマップの一覧です。
gitlinker.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 対象行のGitリポジトリをWebブラウザで開く |
require('gitlinker.actions').open_in_browser |
<Leader>go ( ,go ) |
git open in browser |
ビジュアル
ビジュアルモード( x )でよく使うキーマップの一覧です。
ssr.nvim
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| ストラクチュアルサーチする |
require('ssr').open |
<Leader>sr ( ,sr ) |
structual search and replace |
コマンドライン
コマンドラインモード( c )でよく使うキーマップの一覧です。
nvim-cmp
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| 前の候補に移動する |
<C-p> |
- |
previous |
| 前の候補に移動する |
<S-Tab> |
- |
|
| 次の候補に移動する |
<C-n> |
- |
next |
| 次の候補に移動する |
<Tab> |
- |
|
| 候補を閉じる |
<C-e> |
- |
exit |
参考
端末ジョブ
端末ジョブモード( t )でよく使うキーマップの一覧です。
ugaterm
| 説明 |
デフォルト |
カスタマイズ |
備考 |
| ターミナルの表示を切り替える |
<Cmd>UgatermToggle<CR> |
<Leader>t ( ,t ) |
terminal |
| ターミナルを抜ける |
<C-\\><C-n> |
<Esc> |
|
おわりに
これでNeovimのプラグインをかんたんに呼び出せます 