首页 > 解决方案 > 如何只为映射vim函数的结果设置颜色?

问题描述

我的 vimrc 上有这个:

nmap <F3> i<C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR>

当我在 vim 编辑器上按 F3 时,它会返回类似日期时间的内容。但我不知道如何为此设置不同的颜色。

我在https://manpages.debian.org上发现了一些其他功能,但我不确定...有什么想法吗?

标签: vimneovim

解决方案


您在映射中调用的函数不是外部函数/命令/任何东西:它是一个仅返回纯文本的 Vim 函数,没有任何突出显示信息。

这有两个后果:

  • 您将在该站点上找到的所有联机帮助页都无关紧要,
  • 您将不得不在这些映射之外处理在 Vim中突出显示自己。

首先,您可以稍微简化您的一对映射:

inoremap <F3> <C-R>=strftime("%Y-%a-%m-%d %I:%M %R")<CR>
nmap <F3> i<F3><Esc>

第二:如果它是一次性的,你可以通过以下方式逃脱:

:match Directory /\d\{4}-\w\{3}-\d\{2}-\d\{2}\s\d\{2}:\d\{2}\s\d\{2}:\d\{2}/

它与您的电话返回的日期匹配:help strftime()并将其分配给默认Directory突出显示组(这是第一个想到的):

在此处输入图像描述

:help :match

第三,如果您希望它是自动的,您将不得不更深入地研究语法高亮,这是一个两步过程:

  1. :help syntax您使用,定义语法组
  2. 您将视觉属性应用到具有:help :highlight.

假设您希望这发生在具有 filetype 的缓冲区中foo,您可以创建~/.vim/after/syntax/foo.vim可以定义自己的语法组的位置:

syntax match MyDate /\d\{4}-\w\{3}-\d\{2}-\d\{2}\s\d\{2}:\d\{2}\s\d\{2}:\d\{2}/

并将其链接到默认组:

highlight link MyDate Directory

如果您更喜欢自己处理该特定高亮组的视觉属性,则可以按照本要点中描述的方法进行操作。


推荐阅读