こんにちは。ナミレリです。この記事ではstatuscol.nvimを使ってNeovimのステータスカラムをカスタマイズする方法を紹介します。
カスタマイズ後のステータスカラム

Lazy.nvimの導入や初期設定、LSP環境の構築については下の記事を参考にしてください。

この記事はこんな人にオススメ
- Neovimを使い始めて、見やすく便利な環境を整えたい初心者
- Neovimの行番号やステータスカラムを自由にカスタマイズしたいユーザー
- 他のプラグイン(デバッグやGit関連)と連携させより実践的に使いこなしたい方
- Luaによる設定に興味があり、実用的なカスタマイズ例を探している人
- M4 MacBook Air 13インチ
- macOS Sequoia 15.3.2
- NVIM v0.10.4
- Parallels Desktop 20 for Mac バージョン 20.2.2 (55879)

ディレクトリ・ファイル | 説明 |
---|---|
~/.config/nvim/init.lua | Lazy.nvimのブートストラップスクリプトを書きます。 |
~/.config/nvim/lua/plugins/ | このディレクトリ配下の個別ファイルにプラグインを記述。 |
~/.config/nvim/lua/plugins/plugins_lazy.lua | インストールするプラグインをこのファイルに列挙。 |
~/.config/nvim/lua/core/ | このディレクトリ配下に、プラグイン以外の基本的な設定を記述。 |
~/.config/nvim/lua/user/ | このディレクトリ配下に、個別カスタマイズの設定を記述。 |
今回追加するファイル
~/.config/nvim/
├── init.lua
└── lua/
├── plugins/
│ ├── plugins_lazy.lua
│ ├── statuscol_cfg.lua<= 追加
│ ├── lualine_cfg.lua
│ ├── neo-tree_cfg.lua
│ ├── lsp_cfg.lua
│ └── nvim_cmp_cfg.lua
├── core/
│ ├── autocmds.lua
│ ├── keymaps.lua
│ └── options.lua<= 編集
└── user/
├── icons.lua
└── ui.lua
目次
statuscol.nvimとは
statuscol.nvimは、Neovimのステータスカラム(行番号や折りたたみ記号が表示される領域)を柔軟にカスタマイズできるプラグインです。Neovimデフォルトのステータスカラムは好みに合わせた調整が難しいことがあります。statuscol.nvimを使用することで、ステータスカラムの表示内容やクリック時の動作をカスタマイズすることができます。
https://github.com/luukvbaal/statuscol.nvim
カスタマイズ後のステータスカラム

statuscol.nvimの基本設定
プラグインマネージャにLazy.nvimを用いて、statuscol.nvimの設定を紹介していきます。
まず、基本の設定は下のようになります。具体的なステータスカラムの設定はsegments = {}に書いていきます(後述)。
~/.config/nvim/lua/plugins/statuscol_cfg.lua
statuscol_cfg.lua

オプション | 説明 |
---|---|
relculrigh = true | 相対行番号表示を右寄せする設定 |
foldfunc = "builtin" | 折りたたみ(folding)をプラグインのビルトイン関数で表示 |
setopt = true | 自動的にNeovimのオプションを設定(デフォルトでtrue) |
Neovim側で折りたたみ機能(folding)を有効にしておく
Neovim側で折りたたみ機能(folding)を有効にしておきます。私は以下のように設定しています。
~/.config/nvim/lua/core/options.lua
options.lua
オプション | 説明 |
---|---|
vim.o.foldenable = true | 折りたたみ機能(folding)を有効にする |
vim.o.foldmethod = "indent" | インデントの深さに応じて自動的に折りたたむ設定 |
vim.opt.foldcolumn = "1" | ステータスカラムの横に折りたたみ用の列を表示(数字は列の幅を意味) |
vim.o.foldlevel = 99 | ファイルを開いたときにどの深さまで折りたたみを展開するか (99で折りたたみは全て開いた状態でスタート) |
vim.opt.fillchars:append({...}) | 折りたたみ時に表示される文字や記号をカスタマイズ |
segmentsの設定
ステータスカラムはsegmentsという単位で管理し、各segmentの設定を細かくカスタマイズすることができます。各segmentは以下の設定が可能です。
segments オプション | 説明 |
---|---|
text | 表示する文字列や関数のテーブル |
click | クリック時の関数ラベル |
hl | ハイライトグループのラベル |
condition | セグメントの表示条件を定義するブール値や関数のテーブル |
sign | signセグメントを構成するフィールドのテーブル |
なお、signセグメントは以下の設定が可能です。
sign オプション | 指定する値の型・例 | 説明 |
---|---|---|
namespace | テーブル形式 | 表示するサインを特定のnamespace(プラグイン名や識別名)で指定 |
name | 正規表現、文字列、テーブル | 表示するサイン名を正規表現等で指定 |
maxwidth | 数値 | サイン表示エリアの最大表示幅 |
colwidth | 数値 | 実際に確保する列幅 |
auto | ブール値(true / false) | 表示するサインがない場合に、スペースを詰める(false)か 空白を確保する(true)かを指定 |
wrap | ブール値(true / false) | 折り返し表示の行に対してもサインを繰り返し表示するかを指定 |
~/.config/nvim/lua/plugins/statuscol_cfg.lua
statuscol_cfg.lua
その他のサインには、下の記事でも詳しく紹介していますが、SmoothCursor.nvimのアイコンを表示しています。SmoothCursor.nvimの記事もぜひご覧ください。
クリックハンドラーの種類と役割
先程の設定内で、gitsignsとdiagnosticにはclick = "v:lua.ScSa"、折りたたみにはclick = "v:lua.ScFa"、行番号にはclick = "v:lua.ScLa"を設定しました。
そもそもこのclickオプションは、ステータスカラムをクリックした際の動作を指定します。例えばステータスカラム内のgitのマークや「行番号」や「折りたたみ記号」をクリックした際に、特定の機能が実行されるよう設定することができます。
ここで指定されているv:lua.ScSaやv:lua.ScFaやv:lua.ScLaは、クリックされた領域ごとの動作を指しています。
設定セグメント | クリックハンドラー | 意味 |
---|---|---|
gitsigns diagnostic | v:lua.ScSa | Sign(GitマークやLSP診断マーク)のS Git差分や診断情報の表示 |
折りたたみ | v:lua.ScFa | Fold(折りたたみ記号)のF 折りたたみを開閉する |
行番号 | v:lua.ScLa | Line NumberのL その行に移動する |
その他のカスタマイズ
特定のファイルタイプでステータスカラムを表示しない
ft_ignoreオプションを使用して、特定のファイルタイプでステータスカラムの表示を無効にできます。例ではhelpや、terminal、neo-tree、alphaでステータスカラムの表示を無効にしています。
カスタムハイライトの適用
テキストエレメントにはhlフィールドを使用してハイライトを適用することができます。
最後に
最後まで読んでいただきありがとうございます。「statuscol.nvimでNeovimのステータスカラムをかっこ良くカスタマイズする」はいかがでしたでしょうか。
statuscol.nvimを活用することで、Neovimのステータスカラムをカスタマイズできて、モチベを向上させることができたと思います。
おすすめ記事
Neovimをかっこ良くクールに使う設定