У меня есть текст в форме

xxxx  yyyyy
xx yyyy
xxxxxxxx  yyyyy
x y

Я хотел бы, чтобы второй набор в каждой строке начинался в той же точке, т.е.

xxxx      yyyyy
xx        yyyy
xxxxxxxx  yyyyy
x         y

Я не могу придумать элегантного решения с использованием vim, и меня всегда беспокоит, когда я трачу больше времени на решение, чем просто ручное выполнение чего-либо ... Всегда можно обналичить его в следующий раз, если у кого-нибудь есть умный!

1 ответ1

1

Я видел некоторые хитрые трюки с поиском / заменой, которые могли бы выполнить работу, но я не могу за всю свою жизнь зафиксировать их в памяти, поэтому я использую (и рекомендую) плагин.

Используя Align, это становится простым

- VG                (select all)
- <leader>tsp       (align whitespace)

От помощи

    ---------------------------         *alignmap-Tsp*
    Alignment Map Examples: \tsp            *alignmap-tsp* {{{3
    ---------------------------

    Normally Align can't use white spaces for field separators as such
    characters are ignored surrounding field separators.  The \tsp and
    \Tsp maps get around this limitation.

    Original: >
     one two three four five
     six seven eight nine ten
     eleven twelve thirteen fourteen fifteen
<
    Becomes: Select the lines, \tsp >
     one    two    three    four     five
     six    seven  eight    nine     ten
     eleven twelve thirteen fourteen fifteen
<
    Becomes: Select the lines, \Tsp >
        one    two    three     four    five
        six  seven    eight     nine     ten
     eleven twelve thirteen fourteen fifteen
<

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .