vim - 如何只为映射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上发现了一些其他功能,但我不确定...有什么想法吗?
解决方案
您在映射中调用的函数不是外部函数/命令/任何东西:它是一个仅返回纯文本的 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
。
第三,如果您希望它是自动的,您将不得不更深入地研究语法高亮,这是一个两步过程:
:help syntax
您使用,定义语法组- 您将视觉属性应用到具有
: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
如果您更喜欢自己处理该特定高亮组的视觉属性,则可以按照本要点中描述的方法进行操作。
推荐阅读
- python - 循环遍历具有列标题的行
- graphql - GraphQL Dataloader - 带有 load() 函数的全局变量
- tensorflow - 无法在我的 Colab 托管运行时中使用 tensorflow.keras.layers.CuDNNLSTM 或 keras.layers.CuDNNLSTM
- mysql - aws mysql 数据库(Amazon RDS)还是 mongodb?
- ruby-on-rails - 使用管理时添加请求参数时出现不允许的参数错误
- python - 我怎样才能使列表中的每个项目延迟发生?
- python - 如何将字符串添加到文件中的奇数行?
- javascript - 防止内表在嵌套 Html 表中过滤
- python - 集群内的集群是嵌套集群的数据表的多类集群
- java - 由于 android studio 和 adb.exe 的更新,我无法运行我的程序