Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim 設定

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(アイコン表示用)

インストール

1. リポジトリのクローン

任意の場所にこのリポジトリをクローンします。すでに /data_1/git_workspace/nvim に配置している場合は、この手順は不要です。

git clone <リポジトリURL> ~/nvim
cd ~/nvim

2. Neovim へのリンク

実行前に変更内容だけ確認する場合は --dry-run を使います。

./install.sh --dry-run

問題なければ、リポジトリを ~/.config/nvim へリンクします。

./install.sh

install.sh は、既存の ~/.config/nvim が通常ディレクトリの場合は上書きしません。既存設定を残す場合は、先に退避してから再実行します。

mv ~/.config/nvim ~/.config/nvim.backup
./install.sh

リンク後、通常どおり Neovim を起動します。

nvim

3. lazygit のインストール(オプション)

<leader>ggsnacks.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

プラグイン一覧

カラーscheme

プラグイン 説明 読み込み
ellisonleao/gruvbox.nvim gruvbox カラースキームです。contrast = "hard"、ターミナルカラー、undercurl を有効にしています。 起動時(lazy = false、優先度 1000)

LSP(言語サーバー)

プラグイン 説明 読み込み
neovim/nvim-lspconfig LSP クライアント設定です。Go、Python、Rust、TypeScript、Bash、JSON、YAML、Docker、Markdown、C/C++、CSS、HTML、Vim、Lua の15サーバーを設定済みです。 BufReadPreBufNewFile
mason-org/mason.nvim LSP サーバーなどを入れるパッケージ管理です。UI の枠線は rounded です。 BufReadPre
mason-org/mason-lspconfig.nvim Mason と lspconfig のブリッジです。15サーバーを自動インストール・有効化します。 BufReadPre

補完

プラグイン 説明 読み込み
saghen/blink.cmp 補完エンジンです。LSP、buffer、path、snippets を使い、ドキュメント自動表示、ghost text、signature 表示を有効にしています。version = "1.*" で v1 系に固定しています。 InsertEnter
rafamadriz/friendly-snippets blink.cmp から使うスニペット集です。 blink.cmp の依存

UI

プラグイン 説明 読み込み
folke/snacks.nvim 統合 QoL プラグインです。picker、explorer、notifier、indent、dashboard、input、lazygit、scope、scroll、words、bigfile を有効にしています。 起動時(lazy = false、優先度 1000)
nvim-lualine/lualine.nvim ステータスラインです。テーマは gruvbox、区切り文字は SSH 端末でも崩れにくい ` ` です。

Git

プラグイン 説明 読み込み
lewis6991/gitsigns.nvim Git の変更表示、行 blame、hunk 移動、stage、reset、preview を提供します。 BufRead
sindrets/diffview.nvim 差分レビュー画面を提供します。 DiffviewOpenDiffviewFileHistoryDiffviewClose

編集支援

プラグイン 説明 読み込み
echasnovski/mini.nvim surround、comment、pairs、ai、icons を有効にしています。囲み編集、コメント切り替え、自動ペア、テキストオブジェクト、アイコン表示を担当します。 VeryLazy
stevearc/conform.nvim フォーマットを担当します。Lua は stylua を使い、保存時に 500ms のタイムアウトで整形します。 BufWritePre
folke/which-key.nvim キーバインド候補のポップアップを表示します。 VeryLazy
folke/todo-comments.nvim TODO、FIXME、HACK などをハイライトします。 BufRead
MeanderingProgrammer/render-markdown.nvim Markdown、norg、codecompanion を WYSIWYG 風に描画します。コードブロック、見出し、テーブルを見やすくします。 markdownnorgcodecompanion
nvim-lua/plenary.nvim todo-comments.nvim の依存です。 todo-comments.nvim の依存

キーマップ

leader キーはスペースです。<leader>e は explorer の開閉、<leader>d は LSP 診断のフローティング表示に使います。

基本操作

キー 動作
<Esc> 検索ハイライト解除
<C-h/j/k/l> ウィンドウ間移動
<leader>w 保存(:write
<leader>q 終了(:quit
<leader>x 保存して終了(:x
<Esc><Esc> ターミナルモードからノーマルへ

ファイル操作・検索(snacks.picker)

キー 動作
<leader>ff ファイル検索
<leader>fg grep検索
<leader>fb バッファ一覧
<leader>e エクスプローラ

Git操作

キー 動作
<leader>gg LazyGit起動
]h / [h 次の/前のhunkへ移動
<leader>hs hunkをステージ
<leader>hr hunkをリセット
<leader>hp hunkをプレビュー

LSP

キー 動作
gd 定義へジャンプ
grr 参照一覧
grn リネーム
gra コードアクション
gri 実装へジャンプ
gO ドキュメントシンボル一覧
K ホバー(ドキュメント表示)
gD 宣言へジャンプ
[d / ]d 前/次の診断へ移動
<leader>d 診断フローティング表示

編集(mini.nvim)

キー 動作
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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages