Can anyone please help me customize the nvim terminal title?
I couldn’t customize the tab number (1 of 4)
If i open 4 tabs (A.cpp, B.cpp, C.cpp, D.cpp) via nvim, I want my nvim terminal title to look like this
A.cpp - nvim (1 of 4)
my code:
set title
if has('title') && (has('gui_running') || &title)
set titlestring=
set titlestring+=%f " filename
set titlestring+=%h%m%r%w " Flag
set titlestring+=\ -\ %{v:progname}
" set titlestring+=\ -\ %{substitute(getcwd(),\ $HOME,\ '~',\ '')}
endif
This should do about what you’re looking for:
function _G.current_tab()
local curr_buf = vim.fn.bufnr()
local total = 0
local curr_tab
for i = 1, vim.fn.tabpagenr('$') do
total = total + 1
for _, bufnr in ipairs(vim.fn.tabpagebuflist(i)) do
if bufnr == curr_buf then
curr_tab = i
end
end
end
return string.format('(%d of %d)', curr_tab, total)
end
vim.opt.titlestring = [[%f %h%m%r%w - %{v:progname} %{luaeval('current_tab()')}]]
Note that this uses nvim 0.5 features (vim.opt
, vim.fn
, etc.). Also not necessarily the best way to do it, but it does work from some quick testing.
Actually, I way overcomplicated that
Can be done a lot simpler:
:lua vim.opt.titlestring = [[%f %h%m%r%w %{v:progname} (%{tabpagenr()} of %{tabpagenr('$')})]]
Could also do this with :set title
but I like Lua and it’s actually kinda cleaner this way.
2 Likes
@smolck where should i put it?
do i have to make init.lua or something?
i am using init.vim
You should be able to drop the :
at the start and just put lua <rest of cmd>
in your init.vim. Or use multiple set titlestring+=
calls to do the same but w/out any Lua.
1 Like