Есть ли в Vim / Vi команда для перемещения курсора в конец подсветки поиска?

Есть ли в Vim / Vi какие-либо команды для перемещения в пределах выбранного сегмента поиска?

Например, если я ищу слово, есть ли команды для перемещения курсора в конец выделенного сегмента? Скажи, что у меня есть слово "FishTaco" и я хочу найти все экземпляры & quot; Рыбы & quot; и вставьте что-нибудь после него. Я знаю, что могу сделать глобальную замену, но что если я захочу внести изменения только в пару непоследовательных экземпляров?

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

 Jim Stewart06 февр. 2014 г., 21:44
Это не ответ на вопрос, а достижение конечной цели замены всехFish сFishTaco, ты мог бы сделать:%s/Fish\(Taco\)\@!/&Taco/, который найдет каждыйFish не сопровождаетсяTaco и заменить его наFishTaco. Объединяет поиск с негативным прогнозом с заменой, включающей соответствующий термин, за которым следуетTaco.
 Still.Tony09 нояб. 2018 г., 01:39
@ JimStewart Я понятия не имею, почему в этом комментарии по крайней мере столько же +1, сколько и в ответе. Это уровень ниндзя vim.

Ответы на вопрос(6)

Решение Вопроса

/Fish/e

The/e в конце устанавливает курсор в конец области поиска (вместо первого символа по умолчанию.

 Nathan Fellman22 мая 2012 г., 20:38
Отметьте, что вы можете добавить + П или -N поставить курсорn символы до или после конца.
 Benj23 мая 2012 г., 12:19
+ 1 Я использую vim уже 20 лет, так как мне было 12 лет, но я до сих пор этого не знал ...
 smathy20 нояб. 2014 г., 00:52
Стоит отметить, что после того, как вы уже сделали/Fish поиск вы можете перейти к концу с//e и из Vim 7.4 вы можете использоватьgn чтобы визуально выделить найденный результат.

курсор в конце матча" уже дан ответ.

Ты можешь сделать:%s/Fish/FishTaco/c. Это дает вам возможность подтвердить или отклонить каждую замену и пропустить весь бизнес «курсор в конце матча».

 Jordan Parmer23 мая 2012 г., 15:32
Отличный совет. Если я введу 'y', он выполнит замену только первым. Как мне сделать это для каждого подтверждения?
 romainl23 мая 2012 г., 16:25
Он переходит к следующему совпадению и ждет, пока вы наберетеy илиn и так до тех пор, пока не останется ни одного совпадения. Чтобы принять все дальнейшие замены, введитеa, чтобы отклонить их, введитеq.
 Jordan Parmer23 мая 2012 г., 19:47
На самом деле мне не хваталоg после финала/ так что это не продолжалось в моей линии. Спасибо за совет

/Fish, вы можете быстро изменить поиск, чтобы перейти к концу матча через//e, который повторяет последний поиск, но добавляет символe модификатор, который уже был объяснен.

 arkod15 авг. 2013 г., 13:55
е + номер + это именно то, что я искал! здорово

тогда вы можете использовать

/Fish/e+1

который поместит курсор после h. (Без+1 курсор окажется слева от последнего символа.)

Если вам особенно интересно поместить курсор после Fish, но только когда он появляется в «FishTaco», вы можете попробовать один из следующих вариантов:

Вы можете использоват

/FishTaco/s+4

и ваш курсор окажется между рыбой и тако./s+4 помещает курсор на 4 позиции после начала поискового запроса.

Точно так же можно использовать

/FishTaco/e-3

который поместит курсор на 3 позиции слева от левой части последнего (конечного) символа.

Вы также можете использовать

/FishTaco/b+4 

потому что/b+4 будет рассматриваться как/s+4.

 kenny22 мая 2012 г., 22:42
Отличное объяснение, но теперь я просто голоден.

o для переключения позиции курсора между началом и концом выбранного блока. Когда выделение является линейным, это переключает символлини position, то есть курсор перемещается к начальной и конечной строке выделения, но не к начальному или конечному символу. Если выбор является символьным, то движение также символьным.

Вы также можете использовать`< а также`> для переключения курсора между началом и концом визуального блока, однако это влияет на сам выбор, поэтому он используется для сброса или корректировки границ выбора.

Редактировать: Ах, но для основных моментов поиска это не будет работать, потому чтоo инициирует вставку строки. Я думаю, подсветка поиска отличается от визуального выделения, извините

 Timothée Boucher08 февр. 2014 г., 22:45
Я тоже этого не знал. Это замечательно, чтобы изменить начало выделения без начала заново. (например, вы начали выделение одним словом слишком рано или слишком поздно)

/ long-regexp1 \zs long-regexp2 / .. курсор остановится на \ zs, смотри: help \ zs

Ваш ответ на вопрос