gpt4 book ai didi

vim - 根据模式设置状态行颜色的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-04 21:40:57 24 4
gpt4 key购买 nike

我试图改善我的 vim 体验,试图在每次模式更改时更改 vim 状态行颜色。

我试过这个:(找到 here)

    "Automatically change the statusline color depending on mode
function! ChangeStatuslineColor()
if (mode() =~# '\v(n|no)')
exe 'hi! StatusLine ctermfg=008'
elseif (mode() =~# '\v(v|V)' || g:currentmode[mode()] ==# 'V·Block' || get(g:currentmode, mode(), '') ==# 't')
exe 'hi! StatusLine ctermfg=005'
elseif (mode() ==# 'i')
exe 'hi! StatusLine ctermfg=004'
else
exe 'hi! StatusLine ctermfg=006'
endif

return ''
endfunction

...包括:
set statusline+=%{ChangeStatuslineColor()} 

但是有一个问题,如果你切换到插入模式,然后按 Esc 键回到正常模式,它不会改变颜色。只有当您手动进入不同的模式时,它才会变回颜色。

最佳答案

很抱歉进行 necroposting,但我想我为这项任务找到了更好的解决方案。
像这样设置所需的颜色

hi NormalColor guifg=Black guibg=Green ctermbg=46 ctermfg=0
hi InsertColor guifg=Black guibg=Cyan ctermbg=51 ctermfg=0
hi ReplaceColor guifg=Black guibg=maroon1 ctermbg=165 ctermfg=0
hi VisualColor guifg=Black guibg=Orange ctermbg=202 ctermfg=0

现在添加到状态行
set statusline+=%#NormalColor#%{(mode()=='n')?'\ \ NORMAL\ ':''}
set statusline+=%#InsertColor#%{(mode()=='i')?'\ \ INSERT\ ':''}
set statusline+=%#ReplaceColor#%{(mode()=='R')?'\ \ REPLACE\ ':''}
set statusline+=%#VisualColor#%{(mode()=='v')?'\ \ VISUAL\ ':''}

它工作完美,不需要任何视觉模式的解决方法,也不需要额外的光标移动来触发颜色变化。

关于vim - 根据模式设置状态行颜色的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com