2012-01-11 11 views
1

例で区切られた特定の列揃える:私は(MENU.VIMで)2つの新しいメニューオプションを作成しようとしてい右スペース

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 

を:

  • 右の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 

を揃えるためにこれを使用することができます知っているが、私が知りたいことはライン
(PEの終了前に、最新のalignパラメータを見つける方法であります上記の例では "Spaces")、この後にすべてのテキストを右揃えにします(列数を数えずに)。

これは可能ですか?

そして、最初の列または特定の列だけを正しく整列させる方法は全くわかりません。

+1

どのように列を定義できますか?スペース区切りの場合、 "Monte Bianco"は2列にまたがっていますか? – Benoit

+0

@Benoit、monte biancoは2つの異なる列でなければなりません "monte"と "bianco"私の考えは、私が列を必要とするところにspcacesを追加し、上記のことです。 – Reman

答えて

1

するためには、右、左に整列し、それらの残り を残す最初の空白で区切られたカラムを整列以下:Tabularコマンドを使用し、同様

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

は、右の最後の列を整列させるために、

を実行します
:Tab/\s\@<!\ze\s\+\S*$/l1l0r0 

たとえば、少なくとも2つのスペース文字が必要な場合は、 コマンドを次のように変更します。

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

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

ありがとうございました。最初の空白区切りではなく、最初の2つの空白区切り文字で右揃えをしない場合の式は何ですか? (空白が1つしかないセパレータを飛び越す) – Reman

+0

@Remonn:そのケースに対応するコマンドを追加しました。列セパレータが必要とするスペースの最小数を変更するには、適切な数で '2'を置き換えます。 –

関連する問題