#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, которое соответствует только существующим символам, а не всей визуальной строке, как это необходимо для операционной системы.