Ответ 1
Комбинация \=
, подкачки() и repeat():
:%s/\v^.*$/\= submatch(0) . " " . repeat("-", 39 - len(submatch(0)))
Как я могу повторно добавить символ в конце одной или нескольких строк, удаляя строки (строки) в конкретный столбец?
Например:
('x' представляет столбец 40, а не символ в строке, и после текста нет пробелов или вкладок)
line one x
line two x
line three x
line eleventy-billion x
становится
line one ------------------------------x
line two ------------------------------x
line three ----------------------------x
line eleventy-billion -----------------x
Комбинация \=
, подкачки() и repeat():
:%s/\v^.*$/\= submatch(0) . " " . repeat("-", 39 - len(submatch(0)))
На всякий случай, когда кто-нибудь столкнется с этим в будущем, у меня есть альтернативный способ, которым я пользуюсь который (я думаю) легче запомнить в редкий случай, когда нужно вручную выложить несколько строк.
Текст ввода:
Here are some words
They do not have equal length
I want to insert characters after them until column 40
How to do?
Что вы набираете:
gg // Position cursor anywhere on first line you want to pad
q1$40A-<Esc>d40|q // Looks more complex than it is.
// Here, in English:
// 1. Record a macro in slot 1
// 2. Go to the end of the line, then *A*ppend a '-' 40 times
// 3. Delete from cursor position (which is still at the end of the line) to column 40
// 4. Stop recording
:1,4normal @1 // Repeat macro "1" for every line
Выходной текст:
Here are some words-----------------
They do not have equal length-------
I want to insert characters after t-
How to do?--------------------------
Надеюсь, вы сможете выяснить, как настроить различные части команды, чтобы сделать именно то, что вы хотите. Примечание, что текст, который длиннее требуемого диапазона столбцов, будет усечен (показан в строке 3).