Выровнять по праву определенный столбец, разделенный пробелами - PullRequest
1 голос
/ 11 января 2012

Пример:

Monte Bianco 4.807 France/Italy
Monte Rosa 4.634 Italy/Switzerland
Dom 4.545 Switzerland/Italy
Weisshorn 4.505 Switzerland
Cervino (Matterhorn) 4.478 Italy/Switzerland
Suphan Dagi 4.434 Turkey   

Я пытаюсь создать 2 новых пункта меню (в menu.vim):

  • Выровнять по правой 1-й колонке
  • Выровнять по правому последнему столбцу

Я не могу понять, как выровнять по правому краю только первый, только последний столбец или определенный столбец в середине моей таблицы.

Monte Bianco 4.807              France/Italy
Monte Rosa 4.634           Italy/Switzerland
Dom 4.545                  Switzerland/Italy
Weisshorn 4.505                  Switzerland
Cervino (Matterhorn) 4.478 Italy/Switzerland
Suphan Dagi 4.434                     Turkey   

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

Tabular /^\(.\{-}\s\{1,}\)\{1,}/l0l0r0 

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

Возможно ли это?

И я понятия не имею, как выровнять по правому краю только первоестолбец или определенный столбец.

1 Ответ

1 голос
/ 11 января 2012

Чтобы выровнять справа первый разделенный пробелами столбец, оставляя остальные выровняв их по левому краю, используйте следующую команду :Tabular,

:Tab/^\S*\s\+\zs/r1l0l0

Аналогично, чтобы выровнять по правому краю последний столбец, запустите

:Tab/\s\@<!\ze\s\+\S*$/l1l0r0

Если разделители столбцов должны иметь, скажем, не менее двух пробелов, измените команды следующим образом.

:Tab/\(\s\{2,}.*\)\@<!\s\{2,}\zs/r1l0l0

и

:Tab/\s\@<!\ze\s\{2,}\(.*\s\{2,}\)\@!/l1l0r0
...