1

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

Есть ли что-то подобное с vi(m)? (Есть конечно. Но как мне этого добиться?) То есть любой из них:

  • Если я нахожусь в визуальном режиме и выделен текст: выделите идентичный текст

  • Если я искал /foo , выделите все экземпляры foo .

  • Если я нахожусь в начале строки (серии символов, цифр или подчеркиваний), выделите все другие подходящие строки (предпочтительное решение).

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

Изменить: Для моего второго варианта использования я нашел решение (то есть Google нашел его ...):

:set hls

Однако остальные остаются.

3 ответа3

3
:help hlsearch

 When there is a previous search pattern, highlight all its matches.

итак

set hlsearch

к вашему vimrc

3

Для вашего третьего требования,

nnoremap , :mat Error "<C-R><C-W>"<CR>
Поместите это в ваш файл vimrc ..
Нажмите запятую, чтобы выделить все вхождения слова в курсор.
Кроме того, нажатие * или # выделит все вхождения строки в курсоре, когда установлен hlsearch
редактировать:
Для вашего первого требования,
vnoremap <silent> , :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy:mat Error "<C-R><C-R>=substitute(
  \escape(@", '/".*$^~['), '_s+', '\_s\+', 'g')<CR>"<CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
Нашел это здесь . Изменено в соответствии с вашими потребностями.
2

Для двери номер три это то, что делает клавиша #. Он также будет переходить к началу предыдущей строки такого типа. Звездочка (*) делает обратное: перейти к началу следующей строки такого типа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .