Есть ли способ выделить несколько запросов в (g) Vim? - PullRequest
56 голосов
/ 01 апреля 2009

Я хочу найти несколько строк в Vim / gVim и выделить их разными цветами. Есть ли способ сделать это с помощью встроенного Vim или с помощью плагина?

Ответы [ 10 ]

52 голосов
/ 05 марта 2015

Есть два простых способа выделить несколько слов в редакторе vim.

  1. Перейдите в режим поиска, т.е. введите ' / ', а затем введите \ v , за которым следуют слова, которые вы хотите найти, разделенные ' | ' (pipe ).
    Пример: / \ vword1 | word2 | word3
  2. Перейдите в режим поиска и введите слова, которые вы хотите найти, через ' \ | '.
    Пример: / word1 \ | word2 \ | word3

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

41 голосов
/ 30 июля 2010

Это можно сделать вручную, без какого-либо сценария, для двух шаблонов поиска.

:match Search /pattern/
:match Search /<CTRL-R>/   # highlight the current search pattern

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

 :match <TAB>
 :match <TAB>    # completion will list all highlight group

Это удобно, когда вы не можете использовать свою собственную конфигурацию vim.

:match none      # clear the match pattern to stop highlighting
27 голосов
/ 05 декабря 2014

Для поиска нескольких строк в vim вы можете сделать так:

/search1\|search2

Это работает и выделит search1 и search2, но с тем же цветом. Вы должны сделать это в редакторе vim.

18 голосов
/ 01 апреля 2009

Попробуйте " Выделить несколько слов ", которое использует matchadd().

5 голосов
/ 15 декабря 2012

Да, из коробки вы можете использовать matchadd().

Для добавления выделения, например. для конечных пробелов:

:highlight ExtraWhitespace ctermbg=grey guibg=grey
:call matchadd('ExtraWhitespace', '\s\+$', 11)

Для просмотра всех совпадений:

:echo getmatches()

Для удаления совпадений используйте matchdelete(). Eg.:

:call matchdelete(7)
4 голосов
/ 01 июля 2009

MultipleSearch : выделение нескольких запросов одновременно, каждый из которых имеет свой цвет.

http://www.vim.org/scripts/script.php?script_id=479

:Search <pattern1> //will highlight all occurences of <pattern1> in the current buffer.
A subsequent :Search <pattern2> will highlight all occurences of <pattern2> in the current buffer.
1 голос
/ 07 июля 2018
:%s /red\|green\|blue/

Хотя я не уверен, как сохранить разные цвета для разных ключевых слов. Благодарю.

0 голосов
/ 19 апреля 2014

Я предпочитаю плагин выделения, простой и достаточно, может автоматически выделять разные слова разными цветами.

http://www.vim.org/scripts/script.php?script_id=1599

0 голосов
/ 28 марта 2014

Мой Плагин Mark может выделять несколько слов разными цветами одновременно, как встроенный поиск. Он поставляется с множеством отображений и команд, позволяет сохранять шаблоны и поддерживает несколько цветовых палитр.

0 голосов
/ 03 мая 2009

MultipleSearch2 - это другой скрипт, который интегрирован с поиском vim: http://www.vim.org/scripts/script.php?script_id=1183

...