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


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

|add_test()          (| == cursor position)

и хотите заменить "добавить" на "del".

del|_test()

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

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

6 51

6 ответов:

3s, "заменить 3 символа" - это то же самое, что и c3l. 3cl и c3l должно быть то же самое, я не знаю, почему вы увидите тот же символ повторяется. Я также поклонник использования t, например,ct_ как упоминалось в другом плакате, тогда мне не нужно подсчитывать символы и можно просто ввести "del".

я тоже боролся с "заменой нескольких символов" в течение нескольких дней; 'r' отлично подходит для одиночных символов, R было здорово для строки соответствующей длины, но Я хотел что-то вроде того, о чем просит ОП. Итак, я набрал :help x и прочитав некоторое время, выясняется, что описание s и S находятся всего в нескольких страницах от x.

другими словами, :help - твой друг. Читайте и учитесь.

использовать c{motion}:

  1. cf_ - изменить до первого ' _ ' (включая);
  2. ct_ - изменить до первого '_' (исключая);
  3. cw - меняем первое слово;

слово определяется iskeyword переменной. Проверьте это с :набор iskeyword? и удалить любой'_', как это : set iskeyword=@, 48-57, 192-255. По путь см. : помогите c и :помогите движения Если вы хотите больше.

Я думаю 3cl Это то, что вы хотите. Он меняет 3 символа вправо. Я бы набрал ct_del<esc>, но это не то, что ты просил

c3  ('c', '3', пробел), затем введите символы, которые вы хотите вставить. (Или вы можете использовать стрелку вправо или l, а не в пространстве.)

или, как только что сказал @ Mike в комментарии,Control-RR отлично работает, если количество символов совпадает с количеством символов, которые вы удаляете.

или ct_ чтобы перейти от курсора к следующему _ символ.

Если работы имеют одинаковую длину, можно использовать R команда, которая заменяет то, что вы имели ранее с тем, что вы вводите.

другие ответы использовать цифры. Когда текст длиннее, его легче не считать. Например, я часто делаю заголовки в файлах markdown, таких как:

Some super duper long title that I don't want to have to count

двойной строку с yypp

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 ============================================================== (Я добавил пробел выше, чтобы отключить форматирование markdown Stack overflow)