突出显示VIM中的特定列

时间:2011-07-18 09:09:41

标签: vim highlighting

我使用包含固定位置数据的文件进行了大量工作。非分隔的“CSV”文件,如果你愿意......通常,我想强调一个特定的列。

我试过

:match ErrorMsg /\%>30v.\+\%<40v/

但这个速度非常慢,只与第一行匹配。我想这个文件可能太大了。请注意,文件非常宽(大约40000个字符)但不是很长(大约2000行)。数据来源于我无法控制的旧工具。

示例文件:

                                                 63082                                                   
                                                 01089                                                   
                                                 75518                              735301               

                                                 53473                              017146               
                                                                                     37217               
                                                                                        07               
                                                                                    940376               
                                                   762                                2842               

                                                                                     88331               
                                                 40680                                8928               
            645718                                                                                       
                                                  0131                                                   
                                                                                     03522               

             47210                                                                   27431               

             93837                                                                                       
                                                                                   8825072    49479415   

                                                 52084                                8940               
                                               0591705                              205635               
                                                                                    525429               
                                                 65339                                 300               


                                                  0397                                                   
                                                                                      1983               
                                                     0                                                   
                                                                                   2605768               
            121991                                                                     648               
                                                  3892                                                   

                                                  1260                                                   

有什么想法吗?

2 个答案:

答案 0 :(得分:18)

您使用的是Vim 7.3吗?

显然他们最近刚添加了colorcolumn选项。

尝试:

:set colorcolumn=31,32,33,34,35,36,37,38,39

请注意,:help 'colorcolumn'表示“会使屏幕重绘速度变慢”。不过,我通过使用1234567890的纯块以及您指定的确切重复次数来复制您的场景。

您提到的命令非常慢。 colorcolumn不是。

  

但是这个速度非常慢,只匹配第一行

“第一行”是指第一个显示的行,当启用自动换行时?不幸的是colorcolumn会表现出同样的行为......

答案 1 :(得分:1)

This is off the original topic, but Google leads people here. When trying to fix a horribly indented YAML or any other swiftwidth=2 file, I really struggle to visually recognize what is and isn't in a valid column. A comment by @ib to the accepted answer lead me to this gem.

:let &l:colorcolumn = join(range(3,15,2),',')

It basically says set colorcolumn to the comma delimited string value of 3 through 15 counted by 2. (In other words: :set colorcolumn=3,5,7,9,11,13,15) The result looks like this:

enter image description here

You can do a simple :set colorcolumn to see what value results.

To get rid of it do :set colorcolumn=