我一直试图改善我的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键回到正常模式,它不会变回颜色。它会变回颜色只有当你手动进入一个不同的模式。
5条答案
按热度按时间h5qlskok1#
很抱歉发布了necroposting,但是我想我找到了一个更好的方法来解决这个任务。像这样设置想要的颜色
现在添加到状态行
它工作完美,不需要任何视觉模式的变通办法,也不需要额外的光标移动来触发颜色变化。
lqfhib0f2#
我发现下面的方法对我来说是最好的。它为我提供了所有不同模式的颜色,而不仅仅是插入,替换,视觉和正常。
vatpfxk53#
也许你应该试试这个vim插件vim-airline。它可以根据你设置的颜色主题自动改变状态线的颜色。
nfs0ujit4#
我喜欢有两个vim配置,一个使用插件,另一个只有一个vimrc。要做到这一点,没有插件,如航空公司,我通常使用以下代码片段:http://vim.wikia.com/wiki/Change_statusline_color_to_show_insert_or_normal_mode
进入Vim hi状态时为绿色,guibg=绿色
正如维基上所述:
当你进入插入模式和离开插入模式时,下面的一小段代码会改变状态线的颜色。没有Map键或新命令需要记住,它完全自动工作。
当然,如果您不喜欢所选的颜色,您可以更改以下内容:
guibg=洋红色
dphi5xsq5#
我知道这个问题是问了很久以前,你可能会得到你想要的,但无论如何,我会张贴我的解决方案,在我看来是足够好,在这里分享它.
这里,
statusline_modes_dict
存储key
,这些key
与mode()
返回的内容完全相同,并且text
将显示在状态行和突出显示组中(color_group
),当然必须将其添加到配色方案中,或者别的什么地方。也许有可能合并Get_current_mode_text()
和Get_current_mode_color_group()
到一个单一的功能,以减少操作,但我没有使它在一个状态行工作。