Иногда я хочу отредактировать определенный визуальный блок текста на нескольких строках.В Vim, как эффективно вставлять одни и те же символы в несколько строк?
Для примера я хотел бы взять текст, который выглядит следующим образом:
name
comment
phone
email
И сделать это lõoke как этот
vendor_name
vendor_comment
vendor_phone
vendor_email
В настоящее время, как я бы сделать это сейчас ...
- Выделить все 4 строки строк блока, нажав V, а затем j 4 раза.
- Отступ с >.
- Вернуться назад одна буква с h.
- Перейти к блочному визуальному режиму с помощью ctrlv.
- Выберите 4 ряда, нажав j 4 раза. На этом этапе вы выбрали 4x1 визуальный блок пробелов (4 строки, 1 cols).
- Пресс c. Обратите внимание, что это почти отступом слева от одного столбца.
- Введите
" vendor_"
без котировки. Обратите внимание на дополнительное пространство, которое мы должны были вернуть. - Пресс esc. Это один из самых немногих случаев, когда я использовал esc, чтобы выйти из режима вставки. ctrlc отредактировал бы только первую строчку.
- Повторите шаг 1.
- Отступ другой путь с <.
Мне не нужно отступать, если перед словами есть хотя бы один столбец пробелов. Мне не нужны пробелы, если мне не нужно было очищать визуальный блок с помощью c.
Но если мне нужно очистить, то есть ли способ сделать то, что я выполнил выше, не создавая необходимые пробелы с отступом?
Также почему редактирование нескольких строк сразу работать только при выходе из режима вставки с ЭКУ над CTRlс?
Редактировать:
Вот более сложный пример
name = models.CharField(max_length = 135)
comment = models.TextField(blank = True)
phone = models.CharField(max_length = 135, blank = True)
email = models.EmailField(blank = True)
к
name = models.whatever.CharField(max_length = 135)
comment = models.whatever.TextField(blank = True)
phone = models.whatever.CharField(max_length = 135, blank = True)
email = models.whatever.EmailField(blank = True)
в этом примере будет выполнять вертикальный визуальный блок над .
, а затем снова вставить его назад во время режима вставки, то есть типа .whatever.
. Надеюсь, теперь вы можете увидеть недостаток этого метода. Я ограничен только выбором столбца текста , которые все одинаковы в вертикальном положении.
Лучший способ: ":% S/^/vendor_ /" –
Спасибо за ответ. Это работает, если я хочу только добавить слово в каждую строку. Но метод, который я использую, можно сделать в любой позиции. Позвольте мне добавить еще один мой пример с более сложным примером. – hobbes3
Затем выделите строки, которые вы хотите изменить, с помощью shift-V и введите соответствующую команду поиска и замены - во втором примере: ': s/models \ ./ \ 0whatever. /' –