Быстро выделить диапазон столбцов в VIM - PullRequest
6 голосов
/ 20 июля 2011

При работе с файлами позиционных данных часто очень полезно выделить конкретный столбец.В таких файлах довольно часто встречаются огромные «области», заполненные пробелами (или значениями NULL) и только очень разреженные точки данных.В таких случаях чтение файла становится затруднительным.

Вот выдержка из примера:

                                                   462                                                   
                                                 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                                                   

Мне показалось полезным просто выделить определенный столбец.Сначала я пытался использовать обычный :match, но это оказалось способом для замедления работы с большими файлами данных.Я отправил это как другой вопрос .Ответ прост.cursorcolumn (доступно начиная с vim 7.3) можно установить в диапазон и намного быстрее, так как ему не нужно совпадать с символами.

Реализация предложенного решения показала, что оно работает.Но это громоздко, и - зная vim - должен быть более простой способ указать это.

Вопрос:

Можно ли установить диапазон cursorcolumn для столбцов текущего выбранного(визуальный) блок?

1 Ответ

8 голосов
/ 20 июля 2011

Оказывается, это очень просто.Функция getpos может получить положение любого маркера.Мы будем использовать это, чтобы расширить решение предыдущей задачи:

:let &l:cc = join(range(getpos("'<")[2], getpos("'>")[2]),',')

Теперь мы можем легко отобразить это:

:vnoremap <F5> <ESC>:let &l:cc = join(range(getpos("'<")[2], getpos("'>")[2]),',')<CR>

Итак, теперь при редактировании файла позиционных данных,нам просто нужно войти в визуальный режим, выбрать выделенную часть файла и нажать F5

...