Как я могу вставить текст в конце группы строк?

17

Допустим, у меня был блок текста ...

Lorem ipsum
Lorem ipsum dolor
Lorem ipsum dolor sit
Lorem ipsum dolor sit amet

... и я хотел вставить .в конце каждой строки. Каков наилучший подход для достижения этой цели?

vim.ryan
источник

Ответы:

13

Я делаю следующее, чтобы добавить текст в несколько строк:

  • <c-V> - Войдите в режим визуальной блокировки.
  • Используйте j/ kдля выбора линий.
  • $ - Переместить курсор на последний символ.
  • A - Войдите в режим вставки после последнего символа.
  • Вставьте нужный текст.
  • <Esc> - Выйдите из режима вставки и завершите добавление блока.

По сравнению с написанием :normпосле выбора, нажатия клавиш еще меньше, но настоящая причина, по которой я это использую, заключается в том, что для меня более инстинктивно работать в режиме визуального блока для изменений такого типа.

Витор
источник
Очень полезно в сочетании с вставкой столбца текста .
Поль Ружье
8

В первой строке просто наберите: 4:norm A.

4и :создать диапазон для вас, а затем norm A.добавляет точку к каждой строке

Другое решение для более длинных параграфов может быть: Vip<C-v>$A.<Esc>

Первым шагом является выбор абзаца, Vipзатем вы переходите в режим визуального блока и перемещаете курсор в конец каждой строки, $затем добавляете .к каждой строке и переходите в A.нормальный режим, <Esc>чтобы увидеть, как изменения будут применены к каждой строке. ,

rbernabe
источник
Что это за :Aкоманда? Я не нашел это через:h :A
Питер Ринкер
моя вина. На самом деле не проверял ответ. Я обновляю это. Он должен использовать обычную команду, как @Kritixi Lhitos answer
rbernabe
Два символа меньше, чем 4:norm A.было бы4:s/$/.
Филиппос
3

Сначала вы можете визуально выбрать их, используя, Vа затем использовать клавиши перемещения, чтобы выделить весь текст (или, если текст был строго абзацем, вы могли бы сделать это [начиная с первой строки] V}). А потом типа :. Это должно вызвать что-то вроде :'<,'>в командной строке.

:'<'>normal A.

Это выполняется normal A.на выбранных строках. normal A.выполняется A.в обычном режиме нажатия клавиш. Это Aдобавляет a .в конце каждой из выбранных строк.

Kritixi Lithos
источник
3

Если вы хотите добавить точку в конце всех строк:

:%norm A.

или вы можете использовать поиск и заменить:

:%s/$/./

% - это целый файл, $ - конец строки

Folow
источник
Поскольку @ vim.ryan запрашивает блок текста вместо всего файла, :1,4s/$/./ который заменяет последний символ точкой на строках с 1 по 4 включительно.
Rjt
1

Чтобы сделать его немного более общим, вы можете записать макрос в одну строку, а затем воспроизвести его на каждой строке в выбранном вами диапазоне.

Запишите макрос в регистр (регистр q в этом примере):

qqA.<Esc>q

Затем вы можете визуально выбрать линии, с которыми хотите работать:

Vip

А затем воспроизведите ваш макрос в каждой строке (диапазон будет заполнен автоматически):

:'<,'>norm @q
Зак Ингбретсен
источник