## 背景
[[oil.nvim]]のバッファを開いていると、[[lualine.nvim]]の[[winbar]]表示が冗長になってしまう。
![[2025-08-03-19-40-12.avif|frame]]
Carnelianのdocs配下をoil.nvimで開いた状態
`oil:///Users/tadashi-aikawa/.../carnelian/docs` のように長い表示がされるが、実際は[[カレントディレクトリ (Neovim)|カレントディレクトリ]]の相対パスを表示したい。また、ホームディレクトリは `~` で表現したい。
### 環境
| 対象 | バージョン |
| ---------------- | --------- |
| [[macOS]] | 15.5 |
| [[Neovim]] | 0.11.2 |
| [[oil.nvim]] | `bbad9a7` |
| [[lualine.nvim]] | `a94fc68` |
## やり方
[[lualine.nvim]]の設定に以下を追加する。
`plugins/lualine.lua`
```lua
return {
"nvim-lualine/lualine.nvim",
-- 中略
opts = function()
-- 中略
-- ★ 追加
local fmt_filename = function(str)
-- OilのURLスキームを除去
local path = str:gsub("^oil://", "")
-- カレントディレクトリからの相対パス
local cwd = vim.fn.getcwd()
if path:sub(1, #cwd) == cwd then
local relative = path:sub(#cwd + 2) -- +2 to skip the trailing slash
return relative ~= "" and relative or "."
end
-- home directoryを~に
local home = vim.fn.expand("~")
if path:sub(1, #home) == home then
path = "~" .. path:sub(#home + 1)
end
return path
end
return {
-- 中略
winbar = {
-- 中略
lualine_b = {
{
"filename",
file_status = false,
newfile_status = false,
path = 2,
-- ★ fmt = fmt_filename を追加
fmt = fmt_filename,
},
},
-- 中略
},
inactive_winbar = {
-- 中略
lualine_b = {
{
"filename",
file_status = false,
newfile_status = false,
path = 1,
-- ★ fmt = fmt_filename を追加
fmt = fmt_filename
},
},
-- 中略
},
-- 中略
}
end,
}
```
### 対応後の状態
![[2025-08-03-19-51-03.avif]]
[[Neovim]]の[[カレントディレクトリ (Neovim)|カレントディレクトリ]]以外でも、ホームディレクトリが `~` になりシンプル。
![[2025-08-03-19-51-44.avif]]