任何帮助都将不胜感激。我使用的是以下内容:
let g:usefulstatusline_normal=call(exe, ['hi StatusLine'], {})我得到了:
E15: Invalid expression: call(exe, ['hi StatusLine'], {})我做错了什么?我知道这可能是显而易见的事情。
我想要实现的是获取当前配色方案的状态线的颜色和内容,并将其包含在一个变量中。这样我以后就可以重新使用它了。
任何帮助都是值得感谢的,任何关于如何以更好的方式实现这一目标的提示也将受到感谢。
如果你想要完整的代码,请访问这个文件:https://github.com/Greduan/vim-usefulstatusline/blob/master/autoload/usefulstatusline_colorize.vim
现在忽略上面的部分,它只是为了测试目的。:)
发布于 2013-01-30 11:57:07
这里的问题是您想要:highlight command的输出。与vim中的函数不同,vim中的函数返回的值可以分配给表达式左侧的值,而此命令回显其输出。在这种情况下,您需要暂时将输出重定向到变量中,然后恢复正常输出,如下所示:
redir => g:usefulstatusline_normal
silent! exec 'hi StatusLine'
redir END注意,:highlight命令可以输出的可能值要么是单行上不存在的高亮显示组的错误,要么是换行符,然后是输出,因此您需要做一些工作,而不仅仅是上面的示例:
" Returns: hl group value or '' on nonexistent highlight group
" Usage: let foo = GetHL('StatusLine')
function! GetHL(grp)
redir => hlOutput
silent! exec 'hi '.a:grp
redir END
let hlVal = matchstr(hlOutput, '\v%(\nStatusLine\s+xxx\s+)@<=.*')
return hlVal
endfunction发布于 2013-01-30 15:50:32
请注意,对于查询高亮显示组的属性,您不需要解析:hi命令的输出(无论如何,这应该是在万不得已的情况下才能完成)。您可以结合使用hlID()和synIDattr()函数来完成此操作:
:echo synIDattr(synIDtrans(hlID('StatusLine')), 'bg')https://stackoverflow.com/questions/14595298
复制相似问题