2013-04-08 1 views
2

Я часто оставляю выравнивание текста в другом тексте.
Я знаю, что есть плагины для выравнивания столбцов, но внутри многих других текстов это не самый простой способ.Выравнивание: как урезать пробелы от выбора блока до начала текста?

Это мой текст:

>...this is text    X  more text 
>...this is more text   X   more text 
>...text text text    X    more text 
>...this is text    X  more text 
>...this is more text   X  more text 

То, что я хочу сделать, это выбрать блок одного столбца (X в примере выше) и удалите все пробелы между моим блоком и текст, начинающийся после блока.

Каков наилучший способ для этого?

ответ

3

Визуально выбрать текст для выравнивания, а затем использовать эту команду Ex: '<,'>s/\%Xv\s*// (заменяющего X Блок номер столбца по вашему выбору.)

  • '<,'> определяет диапазон для замещающей команды,

  • \%Xv является нулевой шириной шаблона регулярного выражения, чтобы найти конкретный столбец, проверить :help pattern

+1

+1 Отлично. Новый трюк для меня и ответ на ОП. –

+0

Да, отличное решение! Я пытаюсь поместить это на карту, но безуспешно: 'map : let r = col (". ") gv: exe" s/\\% ". R."v \\ s * //" 'Сначала выберите блок (' X'), затем , чтобы снова захватить столбец, gv, чтобы повторно выбрать блок, а затем выполнить команду. Что здесь не так? :( – Reman

+1

Попробуйте следующее: 'noremap : let r = col (". ") : exe" '<,'> s/\\% ". R." V \\ s * // "' проблема в том, в визуальном режиме ex-команда автоматически добавит '<,'>', поэтому то, что видит vim, фактически есть' '<,'> exe ​​"' <,'> s/\\%". r. "v \\ s * //", что приводит к ошибка. И я предлагаю всегда предпочитать noremap при сопоставлении, если вы не хотите, чтобы рекурсивное поведение было преднамеренно. Я заменил ':' и ';', поэтому для меня это необходимо. Кроме того, ': no' - это одно нажатие клавиши меньше, чем ': map' :) – ipirlo

4

Не находка и заменить решение, но как о

  • поместив курсор на стартовую позицию
  • @="джj"

Разбивка

  • дж: д (далить) ш (ORD) (удаляет все пробелы до начала следующего wordt)
  • j: и перейти к следующей строке
  • @: 99 раз
+1

Просто чтобы быть ясно, ' dw 'на пустое пространство, удалит все пробелы до начала следующего слова. –

+0

@ XavierT. - Thx, намного лучше. Я добавил ваш комментарий к ответу. –