
Предположим, что есть такая строка:
grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100
Если курсор находится на первом месте |
и я хочу удалить until head
, как я могу сделать это с t? Я знаю, что я могу v/hea
выбрать until , но когда я затем удалю текст, я также hea
удалю интерлиньяж h
. Я мог бы просто вернуться на один символ назад, но теперь это цепочка обходных путей. Это работает, но я хотел бы знать, есть ли лучший способ.head
h
Есть ли способ сделать так, чтобы игра t
зависела от двух или более персонажей, а не от одного?
решение1
Попробуй это:
:vnoremap / //b-1<left><left><left><left>
Когда вы печатаете v
, чтобы визуально выбрать регион, а затем печатаете /
, чтобы начать поиск конца региона, Vim введет
//b-1
в командную строку с курсором над вторым /
. Затем вы вводите 2 или более символов, которыми вы хотите завершить область, и нажимаете Enter. b-1
Vim ищет этот шаблон и помещает курсор на один символ перед ( -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
.