在Vim中突出显示当前行的第70个字符

5

我喜欢尽可能地保持严格的70个字符边距。为了帮助实现这一目标,我希望配置vim,使得当前行的第70个字符被突出显示。我知道

set cursorline

可以用来突出显示当前行。然而,我只想突出显示行的最后一个字符(第70个字符)。我该如何实现?

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

编辑2:也许图片会有帮助。enter image description here


你是否有意尝试类似的操作?链接演示)? - Meninx - メネンックス
@Meninx-メネンック斯 不是很准确;你的例子会留下一个高亮轨迹。不过比光标列更接近。 - Justin
我敢打赌,你想做的目前不可能实现。 - BillyJoe
如果您想要将文本包装起来,可以使用:set textwidth=70(它不会提供任何突出显示,但可以换行)和视觉模式下的gq - pozitron57
那么问题更多地与超出换行符的高亮有关?在vim中存在一个称为“:set virtualedit=all”的设置,它允许将光标定位在没有实际字符的位置。尽管如此,我还没有看到在没有实际字符的位置进行任何高亮的方法。 - Tjaart
4个回答

5

您可以使用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
:autocmd CursorMoved * exe 'match IncSearch /\%70v\%' . line(".") . 'l./'

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

您可以将IncSearch更改为任何一个高亮组,这些组可以通过键入以下内容找到:

:hi

1
:call matchadd('Todo', '\%70c')

如果您不想将一个制表符视为单个字符,而是想考虑它所占据的所有空格:

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

你可以使用 :hi 列出的任何其他高亮组(例如更改颜色)代替 Todo

0

如果您正在使用VIM 7.3,可以使用以下命令设置特定列的颜色:

set colorcolumn=70

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接