Многострочное выделение в Vim

В настоящее время я пишу плагин в Vim, который должен одновременно выделять произвольные строки в файле.

До сих пор мой подход заключался в реализации match с номером строки, чтобы выделить ее, но проблема в том, что мне нужно было бы добавить | для каждой второй строки в файле и добавить эту информацию, а затем вызывать ее каждый раз, когда окно перерисовывается.

В моем случае есть еще одна проблема с match, и она заключается в том, что строка, в которой может не быть пробелов, не будет выглядеть выделенной (match выделяет только существующий текст/пробелы).

Таким образом, даже если бы я match переписал окно и выделил все нужные мне строки, с точки зрения пользователя это было бы бесполезно, если подсветка ничего не показывает, если нет пробелов/текста.

Могу ли я получить какие-либо предложения о том, как эффективно отображать/отображать/выделять (я открыт для различных реализаций для решения моей проблемы) произвольных строк в файле одновременно, независимо от количества текста или пробелов?

Изменить: моя основная просьба - выделить строки по номеру строки, а не с помощью регулярного выражения. Таким образом, любое решение должно быть достаточно гибким, чтобы принимать соответствующий номер строки.

Редактировать: signs - это ответ на мою проблему, и я нашел этот учебник лучшим способом понять и реализовать то, что мне нужно: http://htmlpreview.github.io/?https://github.com/runpaint/vim-recipes/blob/master/text/07_navigation/12_bookmarking_lines_with_visible_markers.html


person alfredodeza    schedule 08.04.2011    source источник
comment
Вы смотрели в vim signs? С ними немного сложно работать, но есть плагины, которые используют их для той же цели, если я правильно вас понимаю.   -  person Randy Morris    schedule 08.04.2011
comment
может быть так оно и есть (читая об этом раздел документации)   -  person alfredodeza    schedule 08.04.2011
comment
это было! спасибо за предложение   -  person alfredodeza    schedule 10.04.2011


Ответы (1)


Я бы использовал region, а не match. Вот часть файла синтаксиса моей рукописи, которая выделяет речь:

:syntax region msSpeech start=/"/ end=/"\|\n\n/
:highlight msSpeech guifg=#000088

Он начинается с двойной кавычки и заканчивается другой двойной кавычкой или концом абзаца. При необходимости он выделит несколько строк.

person shawnhcorey    schedule 08.04.2011
comment
Мне нужно выделить целые строки на основе номера строки, а не совпадения с регулярным выражением... Читая документацию для региона, он не принимает для этого номер строки. - person alfredodeza; 08.04.2011
comment
Вы можете использовать /\%10l/ для поиска строки 10 и выделить ее. К сожалению, я не вижу, как выделить несколько строк (кроме цикла и тестирования по модулю 2 и т. д.). - person 13ren; 18.05.2012
comment
@ 13ren Это соответствует только существующим символам, а не всей визуальной строке, как нужно OP. - person Aaron Thoma; 31.10.2016