Windows の Alacritty から SSH 接続した Linux サーバー上で使う Neovim 設定です。プラグイン管理は lazy.nvim で行い、起動時の読み込みを抑えながら必要な機能を追加しています。
.
├── init.lua
├── install.sh
├── lazy-lock.json
├── lua/
│ ├── autocmds.lua
│ ├── keymaps.lua
│ ├── options.lua
│ └── plugins/
│ ├── colorscheme.lua
│ ├── completion.lua
│ ├── editor.lua
│ ├── git.lua
│ ├── lsp.lua
│ └── ui.lua
└── README.md
ファイル
役割
init.lua
leader キー、lazy.nvim の起動処理、各設定モジュールの読み込みを行います。
install.sh
このリポジトリを ~/.config/nvim へシンボリックリンクします。
lazy-lock.json
lazy.nvim が管理するプラグインの固定版情報です。
lua/autocmds.lua
yank ハイライト、前回位置への復帰、Snacks picker の色設定を定義します。
lua/keymaps.lua
基本操作のキーマップを定義します。
lua/options.lua
行番号、検索、インデント、Undo、OSC 52クリップボードなどを定義します。
lua/plugins/colorscheme.lua
カラースキームを定義します。
lua/plugins/completion.lua
補完エンジンとスニペット依存を定義します。
lua/plugins/editor.lua
コメント、囲み編集、自動ペア、整形、Markdown 表示などを定義します。
lua/plugins/git.lua
Git の差分表示、hunk 操作、差分レビューを定義します。
lua/plugins/lsp.lua
LSP、Mason、LSP 用キーマップを定義します。
lua/plugins/ui.lua
picker、explorer、通知、dashboard、lazygit、ステータスラインを定義します。
README.md
この設定の使い方と内容を説明します。
Neovim 0.12以上(bob推奨)
Git 2.19以上
gcc(Cコンパイラ、一部プラグインのビルド用)
lazygit(snacks.lazygit用、オプション)
推奨: Nerd Font(アイコン表示用)
任意の場所にこのリポジトリをクローンします。すでに /data_1/git_workspace/nvim に配置している場合は、この手順は不要です。
git clone < リポジトリURL> ~ /nvim
cd ~ /nvim
実行前に変更内容だけ確認する場合は --dry-run を使います。
問題なければ、リポジトリを ~/.config/nvim へリンクします。
install.sh は、既存の ~/.config/nvim が通常ディレクトリの場合は上書きしません。既存設定を残す場合は、先に退避してから再実行します。
mv ~ /.config/nvim ~ /.config/nvim.backup
./install.sh
リンク後、通常どおり Neovim を起動します。
3. lazygit のインストール(オプション)
<leader>gg で snacks.lazygit を使う場合だけ必要です。Ubuntu 24.04 では、次の手順で公式リリースのバイナリを入れられます。
LAZYGIT_VERSION=$( curl -s " https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po ' "tag_name": "v\K[^"]*' )
curl -Lo lazygit.tar.gz " https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION} _Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
install lazygit ~ /.local/bin
プラグイン
説明
読み込み
ellisonleao/gruvbox.nvim
gruvbox カラースキームです。contrast = "hard"、ターミナルカラー、undercurl を有効にしています。
起動時(lazy = false、優先度 1000)
プラグイン
説明
読み込み
saghen/blink.cmp
補完エンジンです。LSP、buffer、path、snippets を使い、ドキュメント自動表示、ghost text、signature 表示を有効にしています。version = "1.*" で v1 系に固定しています。
InsertEnter
rafamadriz/friendly-snippets
blink.cmp から使うスニペット集です。
blink.cmp の依存
プラグイン
説明
読み込み
folke/snacks.nvim
統合 QoL プラグインです。picker、explorer、notifier、indent、dashboard、input、lazygit、scope、scroll、words、bigfile を有効にしています。
起動時(lazy = false、優先度 1000)
nvim-lualine/lualine.nvim
ステータスラインです。テーマは gruvbox、区切り文字は SSH 端末でも崩れにくい `
` です。
leader キーはスペースです。<leader>e は explorer の開閉、<leader>d は LSP 診断のフローティング表示に使います。
キー
動作
<Esc>
検索ハイライト解除
<C-h/j/k/l>
ウィンドウ間移動
<leader>w
保存(:write)
<leader>q
終了(:quit)
<leader>x
保存して終了(:x)
<Esc><Esc>
ターミナルモードからノーマルへ
キー
動作
<leader>ff
ファイル検索
<leader>fg
grep検索
<leader>fb
バッファ一覧
<leader>e
エクスプローラ
キー
動作
<leader>gg
LazyGit起動
]h / [h
次の/前のhunkへ移動
<leader>hs
hunkをステージ
<leader>hr
hunkをリセット
<leader>hp
hunkをプレビュー
キー
動作
gd
定義へジャンプ
grr
参照一覧
grn
リネーム
gra
コードアクション
gri
実装へジャンプ
gO
ドキュメントシンボル一覧
K
ホバー(ドキュメント表示)
gD
宣言へジャンプ
[d / ]d
前/次の診断へ移動
<leader>d
診断フローティング表示
キー
動作
gc + 対象
コメントトグル(gcc = 行、gcip = 段落)
ys + 対象 + 文字
囲み追加(ysiw' = 'word')
cs + 変換元 + 変換先
囲み変更(cs'" = "word")
ds + 文字
囲み削除(ds' = word)
エクスプローラ内操作(snacks.explorer)
キー
動作
a
新規ファイル作成
d
削除
r
リネーム
c / m
コピー / 移動
o
システムアプリで開く
y / p
ヤンク / ペースト
H
hidden(dotfile)表示切替
I
ignored(gitignore対象)表示切替
Z
全ディレクトリ閉じる
プラグインはlazy.nvimで遅延読み込み(起動速度優先)
SSH環境向け(OSC 52クリップボード対応、マウス無効、短いタイムアウト)
永続Undo、保守的なデフォルト設定
設定ファイルは機能ごとに分割(追加・変更が容易)
Treesitterは未導入(必要に応じて後から追加可能)
XDG_CONFIG_HOME を使った headless 起動確認:
XDG_CONFIG_HOME=" $( dirname " $PWD " ) " nvim --headless +qa
主要設定のアサート:
XDG_CONFIG_HOME=" $( dirname " $PWD " ) " nvim --headless \
+' lua assert(vim.o.number)' \
+' lua assert(vim.o.relativenumber)' \
+' lua assert(vim.o.signcolumn == "yes")' \
+' lua assert(vim.o.mouse == "")' \
+qa
シンボリックリンクの確認:
test " $( readlink -f ~ /.config/nvim) " = " $PWD "
nvim --headless +qa