Чи є спосіб виділити кілька пошукових запитів у (g) Vim?


77

Я хочу знайти кілька рядків у Vim / gVim і виділити їх різними кольорами. Чи можна це зробити за допомогою нестандартного Vim або за допомогою плагіна?

Відповіді:



94

Існує два простих способи виділити кілька слів у редакторі vim.

  1. Перейдіть у режим пошуку, тобто введіть ' / ', а потім введіть \ v, а потім слова, які потрібно шукати, розділені знаком ' | '(труба).
    Наприклад:/\vword1|word2|word3

  2. Перейдіть до режиму пошуку та введіть слова, які ви хочете здійснити, відокремлюючи ' \ | '.
    Наприклад:/word1\|word2\|word3

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


Це особливо корисно, оскільки ви все ще можете використовувати 'n' (або 'N') для переходу до наступного (або попереднього) результату.
mgarey

2
@DaveDopson "мінус" Чи знаєте ви спосіб отримати кілька кольорів?
lmat

45

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

: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

4
Не працював у мене. Для тих, хто цікавиться, спробуйте це: stackoverflow.com/questions/4162664/…
Eric Chen

32

Для пошуку декількох рядків у vim ви можете зробити, як:

/search1\|search2

Це працює, і виділить обидва search1і search2, але з однаковим кольором. Ви повинні зробити це у редакторі vim.


що якщо ви хочете шукати search1, але не відповідає search2, як я можу змінити цей командний рядок у vim?
medev21

5

Так, нестандартно ви можете використовувати matchadd().

Щоб додати виділення, напр. для кінцевих пробілів:

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

Щоб переглянути всі збіги:

:echo getmatches()

Для видалення сірників використовуйте matchdelete(). Наприклад:

:call matchdelete(7)


3
:%s /red\|green\|blue/

Я не впевнений у тому, як зберегти різні кольори для різних ключових слів. Дякую.


1

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


Чи є на ньому сторінка github з описом настанови? Це непросто читати на vim.org. Також непросто повідомити про проблеми.
Ertuğrul Altınboğa

Як я можу встановити цей плагін від Vundle? Оскільки код у vith-скриптах github занадто старий.
Ertulrul Altınboğa

@LiMingHung Ця версія з vim-скриптів буде працювати, але так, вона застаріла. Ви можете попросити хлопців з vim-скриптів оновити його; у них виникають прикрі проблеми зі своїм скребком.
Інго Каркат,

1
Чи можна поставити свій плагін на github? Він може бути встановлений безпосередньо Vundle. Не потрібно покладатися на vim-скрипти.
Ertuğrul Altınboğa

@ ErtuğrulAltınboğa: Mark.vim тепер на GitHub !
Інго Каркат,


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.