Neovimでstatuscolumnの表示を美しく
こちらの記事の設定を適用すると画像のように列ごとに表示内容が決まったstatuscolumnを表示できます。
statuscolumnの設定について
Neovimを利用する際、statuscolumnにGitSignであったりLSPやLinterからのDiagnosticsを表示している方を多く見ます。
ただ、vim.opt.signcolumn = 'yes'
を設定してもGitSignとDiagnosticsが被ってしまい片方の情報が見られないなどということが起こります。
しかし、表示行を増やすためvim.opt.signcolumn = 'yes:2'
を設定しても同じ行に2つDiagnosticsのマーカーが表示されたりして見栄えがよくありません。
以下の画像の一行目はGitにて更新がある行なのですがDiagnosticsが優先して表示されてしまいGitで更新があった行であるかが読み取れません。
そのため今回はstatuscol.nvimを利用して表示を整えてみます。
statuscol.nvimの設定
Diagnosticsを表示するためには各種LSPの設定が、Gitsignsを表示するためにはgitsigns.nvimの設定が必要ですが今回は詳細を省きます。
以下は最初に示した画像のように一列目にはDiagnostics、二列目にはGitSignsを表示するための設定です。
また、更にその右には絶対行数を表示しソースコードとの境を│
で区切っています。
bt_ignore
にはstatuscolumnを表示しないバッファタイプを列挙します。
local builtin = require('statuscol.builtin')
require('statuscol').setup({
bt_ignore = { 'terminal', 'nofile', 'ddu-ff', 'ddu-ff-filter' },
relculright = true,
segments = {
{
sign = {
name = { 'Diagnostic.*' },
maxwidth = 1,
},
},
{
sign = {
namespace = { 'gitsigns' },
maxwidth = 1,
colwidth = 1,
wrap = true,
},
},
{
text = { builtin.lnumfunc },
},
{ text = { '│' } },
},
})
この設定をした際の注意点
複数行を表示する場合でもsigncolumnは2
以上を設定せずに1
を設定します。
上記のstatuscol.nvimの設定1つが一列扱いとなるためです。
Luaの例を以下に示します。このあたりの設定をVim scriptで行っている方は読み替えてください。
vim.opt.signcolumn = 'yes'
おわりに
他の設定に関してはSyu-fu/dotfilesにおいてあるので参考にしてみてください。
Neovimの設定についての記事は数多くありますがstatuscolumnについて書いてあるものが少なかったため書いてみました。
statuslineを凝っている人は多いと感じますが、statuscolumnまで細かく設定している人は少ないのではないでしょうか。
statuscolumnも画面の多くを占め、またコーディングを効率化するための情報を表示できますのでみなさんも設定してみてください。
Discussion