2015-07-30 5 views
3

Как выделить слово под курсором в vim. В настоящее время я делаю это, получая слово под курсором, а затем нажимая *. Конечно, это выделяет текст, но курсор перемещается к следующему найденному слову в файле (если слово существует более одного раза). Но я хочу, чтобы курсор оставался на одном и том же слове, выделяя его.Выделите слово под курсором в gvim

ответ

1

Я добавил эту функцию, она позволяет переключать расцветку максимум 6 слов в различных цветах, нажав <leader> 1-6, <leader> -0 очистит все выделения.

https://github.com/sk1418/myConf/blob/master/common/.vimrc#L729

оригинальная идея была от SJL.

+0

Как добавить функцию в vim? Прошу прощения, я новичок в vim. –

+1

@SagarJain вы могли бы сделать то, что я сделал, добавьте функцию в свой файл vimrc. – Kent

2

Вы можете попробовать Mark plugin, так как он позволяет выделять несколько слов разными цветами одновременно. Он очень стабилен, хорошо документирован и прост в использовании.

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

+0

Отлично!Я думаю, что это именно то, что я хотел. В настоящее время сетевой администратор в моем офисе не позволяет мне загружать этот плагин. Я попробую плагин, как только я получу разрешение на загрузку. Благодаря! –

+0

Где плагин по этой ссылке для загрузки? Я нажал на загрузку (слева в зеленом цвете), но выглядит как исполняемый файл vim. –

+0

Если вы прокрутите список вниз, вы увидите список версий со ссылкой на пакет (* .vmb.gz) - самое последнее - 2.8.5. Вы также можете клонировать репо в github (https://github.com/zeroflyfire/Mark--Karkat). – mMontu

2

Если у вас есть hlsearch на --which учитывая ваше описание команды * Я уверен, что вы do-- вы можете создать отображение, которое устанавливает регистр поиска:

nnoremap <leader>* :<C-u>let @/ = expand('<cword>')<cr> 

После использования ваше сопоставление, вы можете перейти к следующему/предыдущему результату с помощью n/N как и любой другой поиск.

Edit:

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

  • nnoremap говорит о создании нерекурсивного отображения.
  • <leader>* - ключевая последовательность для отображения. По умолчанию <leader> - \, поэтому фактическое отображение - \, за которым следует *. Вы можете изменить это так, как хотите, я просто использовал его в качестве примера.
  • :<C-u>, вероятно, не полезен в этом случае, но я нашел, что это была хорошая привычка. Что он делает, так это гарантии того, что в команду, которую вы собираетесь запустить, не добавлен диапазон.
  • let @/ = устанавливает регистрационный номер / (поиск). Это где последняя искомая строка сохраняется при обычном поиске. Мы манипулируем этим с помощью нашего картографирования, чтобы воспользоваться встроенными hlsearch и n/N функции.
  • expand('<cword>') захватывает слово под курсором.
  • <cr> просто имитирует вас нажатием Введите, чтобы завершить команду.
+0

Я не понял карты. Я совершенно новый для vim. Не могли бы вы объяснить? –

+0

Я обновил ответ. –

+0

Это не работает. Я не уверен, что правильно это сделал. Я просто набрал это и нажал enter nnoremap/*: let @/= expand ('') –

Смежные вопросы