В vim я часто выполняю поиск, чтобы перейти к слову или фразе, вместо того, чтобы перемещаться туда с помощью h/j/k/l
. Затем я попал n
в прыжок между событиями.
Скажи, что у меня есть этот текст:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Я печатаю /an arrow
и нажимаю ввод. Эта фраза выделена, и я перескочу к ней с помощью n
.
Теперь я хочу визуально выделить этот текст , возможно, изменить его или удалить. (Да, я знаю о команде :s
замещения.)
Поскольку мой курсор находится на букве «а» в начале «стрелки», я могу нажать v
, а затем нажать e
пару раз, чтобы выделить всю фразу. Но у меня есть ощущение, что есть более короткий и более семантический способ. В конце концов, я уже указал интересующий меня текст.
Как я могу составить команду, чтобы сказать "визуально выбрать текущий выбор поиска?"
gn
выполняет в точности так, как задано. Представление его в качестве отдельного ответа подчеркивает, что это полная заменаv//e
. Я только что отредактировал свой ответ, чтобы добавить документацию, это лучше?Попробуй это:
Переходит в визуальный режим, повторяет последний поиск и выбирает до конца.
источник
gn
он тоже делает это (не меняя, чтоn
значит)Я обнаружил, что
v//e
само по себе этого недостаточно, поскольку после выхода из визуального режима при переходе к следующему / предыдущему результату поиска курсор помещается в конец результата, а не в его начало, как вы обычно ожидаете.Чтобы это исправить, мы должны сначала перейти к концу результата поиска (
//e
), а затем визуально выбрать его начало (v??
):Приветствия.
источник
nnoremap g? ??b<cr>v//e<cr>
(делает то же самое, но ищет назад, а не вперед)Теперь есть плагин Vim-Search-Objects, который позволяет Vim обрабатывать совпадения поиска как обычные текстовые объекты, так что вы можете просто
va/
(визуально выбрать совпадение) после выполнения поиска.источник
«Глупый» способ сделать это - сопоставить ключ (в данном случае F5), как показано ниже:
После
/an arrow
удара F5.источник
+1
. Опустите это, и он выберет только ту часть, которую искали. С другой стороны,nnoremap <F5> v//e<CR>
кажется, работает просто отлично.x
илиc
после выполнения вашего,F5
но без+1
вся строка поиска, включая символ под курсором, удаляется.