Vim: вставлять одинаковые символы в несколько строк - PullRequest
264 голосов
/ 04 марта 2012

Иногда я хочу отредактировать определенный визуальный блок текста на нескольких строках.

Например, я бы взял текст, который выглядит следующим образом:

name
comment
phone
email

И заставил бы его выглядеть какthis

vendor_name
vendor_comment
vendor_phone
vendor_email

В настоящее время я бы сделал это так ...

  1. Выберите все 4 строки строки блока, нажав V , а затем j 4 раза.
  2. Отступ с > .
  3. Вернуться на одну букву с h .
  4. Перейдите в визуальный режим блокировки с помощью ctrl v .
  5. . Выделите 4 строки вниз, нажав j 4 раза.На данный момент вы выбрали визуальный блок 4x1 из пробелов (4 строки, 1 столбец).
  6. Нажмите c .Обратите внимание, что это в значительной степени с отступом влево на один столбец.
  7. Введите " vendor_" без кавычек.Обратите внимание на дополнительное пространство, которое мы должны были вернуть.
  8. Нажмите esc .Это один из немногих случаев, когда я использую esc , чтобы выйти из режима вставки. ctrl c будет редактировать только первую строку.
  9. Повторите шаг 1.
  10. Сделайте отступ в другом направлении с помощью <</kbd>.

Мне не нужно делать отступ, если перед словами есть хотя бы один столбец пробела.Мне бы не понадобились пробелы, если бы мне не пришлось очищать визуальный блок с помощью c .

Но если мне нужно очистить, то есть ли способ сделать то, что я выполнил выше, без создания необходимого пробела с отступом?

Кроме того, почему редактирование нескольких строк одновременно работает только при выходевне режима вставки с esc over ctrl c ?

Редактировать:

Вотболее сложный пример

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..Надеюсь, теперь вы можете увидеть недостаток этого метода.Я ограничен только выбором столбца текста , которые все одинаковы в вертикальном положении .

Ответы [ 12 ]

1 голос
/ 21 марта 2018
1. ctrl + v to go to visual block 
2. select the lines using up and down arrow 
3. enter small 3i ( presess SMALL I three times)
4. I (Press capital I, That will take you into insert mode)
4. Write the text you want to add
5. esc 
6. press down arrow
1 голос
/ 18 февраля 2017
Use Ctrl+V to enter visual block mode
Move Up/Down to select the columns of text in the lines you want to comment.
Then hit Shift+i and type the text you want to insert.
Then hit Esc, wait 1 second and the inserted text will appear on every line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...