VIM: движение `t` с двумя или более символами

VIM: движение `t` с двумя или более символами

Предположим, что есть такая строка:

grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100

Если курсор находится на первом месте |и я хочу удалить until head, как я могу сделать это с t? Я знаю, что я могу v/heaвыбрать until , но когда я затем удалю текст, я также heaудалю интерлиньяж h. Я мог бы просто вернуться на один символ назад, но теперь это цепочка обходных путей. Это работает, но я хотел бы знать, есть ли лучший способ.headh

Есть ли способ сделать так, чтобы игра tзависела от двух или более персонажей, а не от одного?

решение1

Попробуй это:

:vnoremap / //b-1<left><left><left><left>

Когда вы печатаете v, чтобы визуально выбрать регион, а затем печатаете /, чтобы начать поиск конца региона, Vim введет

//b-1

в командную строку с курсором над вторым /. Затем вы вводите 2 или более символов, которыми вы хотите завершить область, и нажимаете Enter. b-1Vim ищет этот шаблон и помещает курсор на один символ перед ( -1) bначалом совпадения. Смотрите

:help search-offset

Вам не обязательно отображать /. Вы можете использовать map tили какой-либо другой символ вместо этого.

решение2

если вы можете сделать это интерактивно, вы можете попробовать это сeasymotion-плагин:

d;;fh-> закрасит весь текст серым цветом и выделит все hбуквы красным, но заменит их на , a,b,c,…а затем вы можете нажать , bчтобы удалить вторую h.

Я знаю, что это описание немного загадочно — взгляните наYouTube видео

P.S.: Я забыл упомянуть, ;это мой ключ лидера.

решение3

d2fhсделаю это в вашем примере.

решение4

Нет, tпринимает только один символ. Я бы сделал vththd.

Связанный контент