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


17

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

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

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

Ответы:


13

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

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

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


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

8

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

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

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

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


Что это за :Aкоманда? Я не нашел это через:h :A
Питер Ринкер

моя вина. На самом деле не проверял ответ. Я обновляю это. Он должен использовать обычную команду, как @Kritixi Lhitos answer
rbernabe

Два символа меньше, чем 4:norm A.было бы4:s/$/.
Филиппос

3

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

:'<'>normal A.

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


3

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

:%norm A.

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

:%s/$/./

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


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

1

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

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

qqA.<Esc>q

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

Vip

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

:'<,'>norm @q
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.