如何只为映射 vim 函数的结果设置颜色?

How to set the color only for the result of mapping vim function?

我的 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 时,它 returns 类似于日期时间。 但是我不知道如何为此设置不同的颜色。

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

您在映射中调用的函数不是外部函数 function/command/whatever:它是一个 Vim 函数,只有 returns 纯文本,没有任何突出显示信息。

这有两个后果:

  • 您在该站点上找到的所有联机帮助页都是无关紧要的,
  • 你必须自己处理突出显示,在 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. 定义语法组
  3. 您将视觉属性应用于具有 :help :highlight 的那些组。

假设您希望这种情况发生在文件类型为 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}/

和link它到默认组:

highlight link MyDate Directory

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