Vim: добавление строк с символом - PullRequest
13 голосов
/ 23 августа 2009

Как я могу многократно добавлять символ в конце одной или нескольких строк, добавляя строки к определенному столбцу?

Например:
(«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

Ответы [ 2 ]

24 голосов
/ 23 августа 2009

Комбинация \=, submatch () и repeat () :

:%s/\v^.*$/\= submatch(0) . " " . repeat("-", 39 - len(submatch(0)))
5 голосов
/ 09 сентября 2016

На всякий случай, если кто-нибудь столкнется с этим в будущем, у меня есть альтернативный способ, которым я пользуюсь о котором (я думаю) легче вспомнить в том редком случае, когда нужно было бы вручную дополнить некоторые строки.

Входной текст:

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).

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