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

#vim #highlight #lines

#vim #выделение #строки

Вопрос:

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

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

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

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

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

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

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

Комментарии:

1. Вы заглядывали в vim signs ? С ними немного сложно работать, но есть плагины, которые используют их для аналогичной цели, если я вас правильно понимаю.

2. это может быть именно так (читайте об этом в разделе docs)

Ответ №1:

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

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

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

Комментарии:

1. Мне нужно выделить целые строки, основанные на номере строки, а не на совпадениях регулярных выражений… Читая документацию для region, он не принимает номер строки для этого.

2. Вы можете использовать /l/ для «поиска» строки 10 и таким образом выделить ее. К сожалению, я не вижу, как заставить его выделять несколько строк (кроме зацикливания и тестирования по модулю 2 и т.д.).

3. @13ren, которое соответствует только существующим символам, а не всей визуальной строке, как это необходимо для операционной системы.