Подтвердить что ты не робот

Переместить в начало и конец поиска

В vim/gvim я хотел бы иметь возможность перейти к началу и концу текущего поиска. Возможно ли это?

Например, с этим файлом:

A dog and a cat
A hat and a bat

Я хотел бы выполнить поиск, например /dog\sand, а затем перейти от начала выражения "собака и" до конца и обратно, чтобы мой курсор начинался с столбца 3, в буква "d" слова "собака", а затем переместится в столбец 9 под буквой "d" или словом "и".

Я хочу, чтобы это сделать, чтобы я мог искать выражение, а затем использовать команду change, c, в сочетании с командой перемещения, чтобы заменить это конкретное выражение поиска. Я не хочу использовать замену и заменять здесь, я хочу выполнить эту операцию, используя команду изменения и клавишу перемещения.

4b9b3361

Ответ 1

Вы можете перейти к концу матча с помощью c//e<CR>. И //<CR> перенесет вас в начало следующего матча. Возможно, вы могли бы разработать какие-то привязки для тех, которые имеют смысл. Например, я просто попробовал следующее, и, похоже, он работает хорошо:

:onoremap <silent>m //e<CR>

Итак, вы можете сказать cm для совпадения изменений. Я не уверен, что бы я сопоставлял //<CR>. Я попытался сопоставить его с n, и, похоже, он работал нормально. Не знаю, будет ли это проблемой для вас.

:nnoremap <silent>n //<CR>

Ответ 2

Вы ищете c g n. От :help gn:

Search forward for the last used search pattern, like
with `n`, and start Visual mode to select the match.
If the cursor is on the match, visually selects it.
If an operator is pending, operates on the match.
E.g., "dgn" deletes the text of the next match.
If Visual mode is active, extends the selection
until the end of the next match.

Красота этого вы можете сделать c g n, а затем повторить команду с помощью . и, да, она выполнит ту же операцию при следующем сопоставлении шаблона поиска. Это становится чрезвычайно полезным, когда вы начинаете поиск со сложными регулярными выражениями.

Ответ 3

Попробуйте:

/pattern<cr> to place the cursor at the start of search pattern
/pattern/e<cr> to place the cursor at the end of search pattern

Ответ 4

Так как вы знаете, сколько слов вы ищете, почему бы просто не переместить туда и обратно с помощью команд перемещения слов? I.e., "2w", чтобы перейти к концу текущего результата поиска, а "2b" - назад.