【问题标题】:CursorLine highlight in ViM, highlight only line number and spaces/tabs on beginning /end of the lineViM 中的 CursorLine 突出显示,仅突出显示行号和行首/行尾的空格/制表符
【发布时间】:2011-02-15 16:42:19
【问题描述】:

我使用 ViM 的 :highlight CursorLine 来改变当前行的背景颜色。但有时文字不可读。

我想要一个只能更改除文本之外的整行的背景颜色的突出显示(将字符之间的空格/制表符计为文本)。

可行吗?如果是,怎么做?

【问题讨论】:

    标签: vim cursor line highlight


    【解决方案1】:

    据我所知,可能没有直接支持设置光标线的突出显示方式。

    但是,我有一个技巧可以让你随心所欲。也就是我们高亮光标线后,我们可以将一行中的标题/尾随空格的颜色设置更改为当前的“背景”和“前景”。

    :match NoHighLight /^\s\+|\s\+$/ 
    :highlight NoHighLight guibg=background guifg=foreground
    

    一个明显的缺点是从“行尾”到“vim 窗口的边界”的部分仍然会被绘制为光标线设置的颜色。如果它对你来说很难看,你可以通过只设置它的 guifg 来改变 cursorline 的高亮设置,比如:

    :highlight CursorLine guifg=red guibg=background 
    

    也许还有其他巧妙的解决方案,但这是我现在能想到的。 :)

    希望能有所帮助。

    【讨论】:

      【解决方案2】:

      我找到了解决办法-

      关于@Zhaojun的回答:这不是我想要的(也/^\s\+|\s\+$/做的不多,也许应该是/^\s\+\|\s\+$/

      我找到的解决方案是(只是 elflord 配色方案的示例颜色)

      :highlight CursorLine gui=none guibg=grey10
      :set CursorLine
      
      :highlight NoHighLight guibg=background 
      :match NoHighLight /\S\+\(\s\+\|$\)/
      

      然而,对于行尾的尾随空格,它效果不佳,但我通常会删除它们

      为了让它们可见,我使用以下内容

      :highlight EndSpaces guibg=green
      :match EndSpaces /\s\+$/
      

      【讨论】:

      • /^\s\+|\s\+$/ 表示它匹配前导空格和尾随空格。 “|”是“OR”,所以它可以NOT转义为“\|”。在发布我的解决方案之前,我已经完成了一些基本测试,它很好地匹配了前导空格和尾随空格。所以,我不知道为什么它对你不起作用。也许,您可以在这里粘贴一些文本,这样我就可以找出原因。
      • '|'恕我直言,在 vim 的正则表达式方言中不是 OR (:help regex, /|, /\\|) 一些示例代码:“import os\n for e in os.environ.keys():\n\tprint e”
      • 很抱歉对“|”做出了错误的陈述。对于您的问题,一个更简单的解决方案可能只是将“guifg”设置为某种不同的颜色并使“guibg”保持不变。 like: :highlight CursorLine guifg=red guibg=background 在这个解决方案中,所有的空格都会被忽略,因为它们会显示为背景色,所以我们根本不需要匹配这些空格。
      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 2015-05-17
      • 2020-07-24
      相关资源
      最近更新 更多