【问题标题】:Highlighting the 70th character of a current line in Vim在 Vim 中突出显示当前行的第 70 个字符
【发布时间】:2017-06-15 02:31:02
【问题描述】:

我喜欢尽可能保持严格的 70 个字符的边距。为了解决这个问题,我想配置 vim 以便突出显示当前行的第 70 个字符。我明白了

set cursorline

可用于突出显示当前行。但是,我只想 要突出显示的行尾(第 70 个字符)。我将如何实现这一目标?

编辑: cursorcolumn 不是我要找的。我只想要一个字符(当前行的第 70 个字符)。

编辑 2:也许一张图片会有所帮助。

【问题讨论】:

  • 您是否打算在某些方面做类似link (DEMO) 的事情?
  • @Meninx-メネンックス 不是真的;您的示例留下了突出显示的痕迹。不过,比 cursorcolumn 更接近。
  • 我敢打赌你想做的事情目前是不可能的。
  • 如果您想要这样来换行文本,请尝试:set textwidth=70(它不提供任何突出显示但会换行文本)和可视模式下的gq
  • 所以这个问题更多地与换行符之外的突出显示有关?在 vim 中有一个名为 :set virtualedit=all 的设置,它允许光标定位在没有实际字符的地方。虽然,我还没有看到在没有实际角色的情况下进行任何突出显示的方法。

标签: vim highlight margins


【解决方案1】:

您可以使用colorcolumn 设置“右边距”栏。

这在 Vim 7.3 之前不存在,因此最好仅在该功能可用时启用它。

if exists('&colorcolumn')
    set colorcolumn=70
endif

我更喜欢这个只在插入模式下显示,所以我用这个:

if exists('&colorcolumn')
    autocmd InsertEnter * set colorcolumn=80
    autocmd InsertLeave * set colorcolumn=""
endif

这将在您切换到插入模式时设置选项,并在您离开插入模式时将其关闭。

【讨论】:

    【解决方案2】:

    如果您使用的是 VIM 7.3,您可以使用以下命令设置某个列的颜色:

    set colorcolumn=70
    

    【讨论】:

      【解决方案3】:
      :call matchadd('Todo', '\%70c')
      

      如果您不想将一个制表符计为单个字符,但您想考虑它占用的所有空格:

      :call matchadd('Todo', '\%70v')
      

      您可以使用:hi 列出的任何其他突出显示组(例如更改颜色)而不是Todo

      【讨论】:

        【解决方案4】:
        :autocmd CursorMoved * exe 'match IncSearch /\%70v\%' . line(".") . 'l./'
        

        高亮颜色将由您的配色方案决定。

        您可以将 IncSearch 更改为任何突出显示组,可以通过键入以下内容找到:

        :hi
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-24
          • 2014-10-03
          • 2011-07-21
          • 1970-01-01
          • 2012-07-23
          • 2014-08-20
          相关资源
          最近更新 更多