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

Измените следующие N символов в VIM

Скажем, у меня есть следующая строка:

|add_test()          (| == cursor position)

И хочу заменить 'add' на 'del'.

del|_test()

Я могу либо нажать X три раза, а затем нажать i, чтобы вставить и ввести del. То, что я хочу, это что-то вроде 3c или 3r, чтобы перезаписать только 3 символа. Оба они не выполняют то, что я хочу, 3c перезаписывает 3 символа с тем же character, 3r делает несколько других вещей.

Есть ли простой способ сделать это без ручного Xing и вставки текста?

4b9b3361

Ответ 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"