如何在特定列上设置标尺?


50

当使用不同语言进行编码时,我倾向于将行限制为特定长度(通常为79或80个字符)。

我已经在其他编辑器中通过使用标尺(在列上显示实线)或通过更改文本的颜色来表示已经完成了此操作。

当我一行接近或超过79个字符时,Vim如何指示我?

Answers:


64

您可以使用:set colorcolumn:set cc简称)选项在特定行显示标尺,该选项仅在Vim 7.3或更高版本中可用。

set colorcolumn=80

这会将该列的背景色设置为红色,从而为您提供可视的标尺。

默认颜色列设置为80的图片

如果要使用红色以外的其他颜色(它确实很突出),可以通过设置highlightfor 来更改颜色ColorColumn

highlight ColorColumn ctermbg=0 guibg=lightgrey

列的自定义颜色

您可以使用cterm参数设置Vim终端版本的颜色,使用参数设置Vim的GUI版本的颜色guibg。的0是用于黑色的ASCII换码,明亮时是灰色(它是,默认情况下)的值。该值lightgrey用于Vim的GUI版本,例如gVim,以将背景色更改为浅灰色。


10
您甚至可以有多个逗号分隔的色列!
200_success 2015年

4
将其与join&range结合使用,您可以有一堆用很少的代码着色的列。我的.vimrc有:execute "set colorcolumn=" . join(range(81,335), ',')
Cody Poll 2015年

19

作为凯文答案的补充,您可以有多个色列。当我编写代码时,有时会有80列的“软”限制和120列的“硬”限制。所以我想在80行,然后在120之后的每一列上色。

我这样做

let &colorcolumn="80,".join(range(120,999),",")

当然,可以很容易地将其修改为其他首选项。


14

Vim 7.3带来了该colorcolumn选项,在其他答案中也有详细介绍。

但是,如果由于某种原因没有7.3版,您仍然可以使用vim的match功能直观地看到您超出了特定的列数(:help match有关详细信息,请参见)。

本质上,match命令允许您为与给定正则表达式匹配的文本创建持久性突出显示。:match ColorColumn "\%80v."将使用“ ColorColumn”组突出显示第80列中的文本。当然,您可以替换任何突出显示组和任何列值。如果您想要一个强烈的视觉指示,该表达式"\%>79v.\+"将突出显示第80列及以后的列。

\%80v表示“在虚拟列80中匹配,” \%>79v表示“ 虚拟列79 之后匹配;:help /\%c有关更多信息,请参见。)

但是,只有在指定的列中存在实际字符时,此方法才会突出显示,这使它在视觉上不如一致colorcolumn


4
我个人认为matches的一致性不太好,因为它仅突出显示超出80列限制的行,而不是在屏幕右侧显示(对我而言)侵入性的大红色线。因此,在用于Python的vimrc中,我使用了call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(PEP 8中建议的长度为80和100)
jalanb 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.