Измените следующие N символов в VIM
Скажем, у меня есть следующая строка:
|add_test() (| == cursor position)
И хочу заменить 'add' на 'del'.
del|_test()
Я могу либо нажать X три раза, а затем нажать i, чтобы вставить и ввести del.
То, что я хочу, это что-то вроде 3c или 3r, чтобы перезаписать только 3 символа.
Оба они не выполняют то, что я хочу, 3c перезаписывает 3 символа с тем же
character, 3r делает несколько других вещей.
Есть ли простой способ сделать это без ручного Xing и вставки текста?
Ответы
Ответ 1
3s
, "подставить 3 символа" совпадает с c3l
. 3cl
и c3l
должны быть одинаковыми, я не знаю, почему вы увидите один и тот же символ. Я также поклонник использования t
, например. ct_
как упоминается еще один плакат, тогда мне не нужно подсчитывать символы и просто введите "del".
Я боролся с "заменой нескольких персонажей" в течение нескольких дней; "r" отлично подходит для одиночных символов, R
отлично подходит для строки совпадающей длины, но мне нужно что-то вроде OP. Итак, я набрал :help x
и прочитал какое-то время, оказалось, что описание s
и s
всего лишь на пару страниц вниз от x
.
Другими словами, :help
является вашим другом. Читайте и учитесь.
Ответ 2
Используйте команду c {motion}:
- cf _ - изменить до первого '_' (включая);
- ct _ - изменить до первого '_' (исключая);
- cw - изменить первое слово;
Слово определяется переменной iskeyword. Проверьте это с помощью : установите "ключевое слово" и удалите все "_", например : set iskeyword = @, 48-57,192-255.
Кстати, посмотрите : help c и : help motion, если вы хотите больше.
Ответ 3
Я думаю, что 3cl
- это то, что вы хотите. Он изменяет 3 символа вправо. Я бы набрал ct_del<esc>
, но это не то, что вы просили
Ответ 4
c3
('c', '3', пробел), затем введите символы, которые вы хотите вставить. (Или вы можете использовать стрелку вправо или l
вместо пробела.)
Или, как только что сказал @Mike в комментарии, R
прекрасно работает, если количество символов совпадает с количеством удаляемых символов.
Или ct_
, чтобы перейти от курсора к следующему символу _
.
Ответ 5
Если работы имеют одинаковую длину, вы можете использовать команду R
, которая заменяет то, что у вас было ранее, с тем, что вы набираете.
Ответ 6
Другие ответы приведены с использованием номеров. Когда текст длиннее, его легче не считать. Например, я часто делаю заголовки в файлах уценки, например:
Some super duper long title that I don't want to have to count
удвоить линию с yy
pp
Some super duper long title that I don't want to have to count
Some super duper long title that I don't want to have to count
Выделить всю строку с V
затем используйте r{char}
или в этом случае r=
, чтобы получить:
Some super duper long title that I don't want to have to count
==============================================================
(Я добавил пробел выше, чтобы отключить форматирование уценки)
Ответ 7
"c3h" вернет 3 символа и перейдет в режим вставки,
затем введите свой "Del"