如何在 Vim 中正确扩展突出显示组?

2023-12-26

我想创建一个名为的突出显示组Italic完全像Normal但文本为斜体。目前,我的Normal突出显示 被设定为

ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424

我的问题是:

  1. 正在添加term=italic to the Normal以正确的方式赋予属性 要做到这一点?

    :hi Italic term=italic ctermfg=251 ctermbg=234 guifg=#cccccc guibg=#242424
    
  2. 是否可以以通用方式做到这一点,即定义 新的突出显示组可与任何基础组的风格相匹配 配色方案(以上仅适用于我当前的配色方案)? 就像是

    :hi Italic extends Normal term=italic
    

要解决此问题,您可以通过脚本创建突出显示组。 下面的函数采用三个字符串参数: 组的名称 突出显示的基础、要创建的组的名称和字符串 包含要添加或覆盖的突出显示属性。

function! ExtendHighlight(base, new, extra)
    redir => attrs | sil! exec 'highlight' a:base | redir END
    let attrs = substitute(split(attrs, '\n')[0], '^\S\+\s\+xxx\s*', '', '')
    sil exec 'highlight' a:new attrs a:extra
endfunction

因此,调用

:call ExtendHighlight('Normal', 'Italic', 'term=italic')

创建一个名为的新组Italic延伸Normal突出显示 由term=italic属性字符串。

请注意,自定义突出显示组的配色方案保持不变 交换。要纠正此行为,您可以在以下情况下更新组: 当前配色方案更改:

:autocmd ColorScheme * call ExtendHighlight('Normal', 'Italic', 'term=italic')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Vim 中正确扩展突出显示组? 的相关文章

  • 带有 Viper 和 Vimpulse 的 Emacs 缺少哪些 Vim 功能?

    Emacs 的一些重要功能在 Vim 中是缺失的 例如 comint 模式 并且没有脚本 插件可以替代它们 与 Emacs 相比 Vim 也有一些优点 例如模式编辑和通常更好的默认快捷键 然而 Viper 模式让我两者兼而有之 Vimpul
  • 更改 eclipse 中 .txt 文件编辑器的外观

    我正在为 Eclipse 使用深色主题 当我打开扩展名为 txt 的文件时 文本和背景的颜色都是黑色 如何更改此 txt 文件编辑器的外观 我想将文本颜色设置为白色 我对首选项菜单感到困惑 我已经找到了 在首选项菜单中选择 General
  • 如果文件类型 == tex

    如果文件是乳胶文件 我想在 vimrc 中运行命令 我想我的语法有问题 但它不起作用 有什么线索吗 if filetype tex set spell endif 您可以使用自动命令来实现您想要的 autocmd BufNewFile Bu
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • 如何使用 gnuplot 突出显示绘图区域

    如果有人可以帮助解决这个问题 我将不胜感激 我正在使用 gnuplot 5 0 0 处理雷达 或蜘蛛网 图 所有轴上的比例和范围都是相同的 1 及以上的数字具有特殊含义 我想强调这一点 我正在考虑三件事来提高知名度 只需将 1 处的刻度线
  • 将 vim 的 vertsplit 字符更改为 │

    我认为这与代码页相关 但询问也无妨 在 windows xp 的 cmd 上 gvim 7 2 如何更改 vertsplit 字符 而不是默认的 它是 因此它是一条完整的线 而不是一条分割线 该字符通常会更改为 set fillchars
  • Vim 脚本中的“reduce”函数

    Vim 脚本有一些非常基本的函数式编程工具 It has map and filter 但据我所知它缺乏reduce 功能 Reduce https en wikipedia org wiki Fold 28higher order fun
  • 在 Vim 中隐藏所有(不)匹配的行

    是否可以在 vi 或 Vim 中显示 隐藏所有匹配行 不突出显示 而只显示那些行 例如 我有一个带有单词单词的文本ERROR 如何让它只显示包含以下内容的行ERROR以及如何只显示线条而不显示ERROR 有解决办法吗不删除所有匹配的行然后撤
  • 开发人员实际上是否使用 vim 在 Windows 操作系统上编写代码(Java)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 终端 vim 中的语法高亮显示,但 gVIM 中没有

    我目前在终端中使用 VIM 并且有完美的语法突出显示 但是当我尝试使用 gvim 时 无论什么类型的文件或输入多少次 syntax on 我都没有得到任何语法突出显示 有人有什么想法吗 谢谢 这是我的 vimrc 供感兴趣的人使用 Turn
  • 如何在 Vim 中创建行号和文本之间的边框

    我希望在行号右侧和文本左侧有一条细边框线 您可以使用不同的颜色来突出显示LineNr 例如 hi LineNr cterm bold ctermbg gray ctermfg black gui bold guibg gray guifg
  • MacVim:跨窗口共享命名寄存器?

    我想跨 MacVim 窗口共享命名寄存器缓冲区 就像我在单个实例中跨缓冲区一样 换句话说 假设我标记了一个位置 m 然后去其他地方 我将一些文本拉入寄存器 a 从当前点到 m a m 然后我转到另一个窗口 不 我不是指同一窗口中的另一个分割
  • 为什么使用 键取消搜索时 vim incsearch 会暂停?

    在 vim 中 如果你set incsearch然后它将滚动到当前搜索词的下一个匹配项 而无需移动光标 我经常用它来阅读一段代码而不用将光标移动到那里 因为我可以点击
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 如何让 vim 很好地对齐三元 ?: 运算符?

    我喜欢使用三元 运算符编写代码 如下所示 std string result input empty createNewItem processInput input 我如何配置vim 以便在输入后按回车键createNewItem 缩进下
  • 设置 Vim 背景颜色

    当我尝试更改背景颜色时 vimrc或者直接在 Vim 中使用以下命令 set background dark 这根本不影响我的背景 也没有light选项 不过 当我运行 gvim 时 看起来还不错 有没有办法在不更改 Konsole 设置的
  • vim 的 @@ 变量是什么?

    我知道通过输入 我执行最后一个 命令 但谁能解释一下什么 是在下面的代码中 在 vim 帮助文件中找到 function CountSpaces type let sel save selection let reg save if a 0
  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • 我可以在 VIM 或 Perl 中替换单个正则表达式中的多个项目吗?

    假设我有字符串 The Quick Brown Fox Jumps Over the Lazy Dog 我可以用一个正则表达式将其更改为 The Slow Brown Fox Jumps Over the Energy Dog 吗 目前 我
  • Vim:领导不工作

    当尝试使用时vim latexsuite的映射 使用的是Leader不工作 nmap n

随机推荐