2011-06-30 25 views
6

我如何右對齊(左對齊?)數字或文本塊在vim這樣的:如何對齊最大數字或最大字符串爲對齊指示符的列?

來自:

45 209 25  1 
2  4  2  3 
34  5 300  5 
34 120 34 12 

這樣:

45 209 25 1 
2  4  2 3 
34  5 300 5 
34 120 34 12 

這意味着,每列中最大數字或最大字符串不移動。
第一列是45 + 34,第二列209 + 120,第三列300和最後一列12.

+0

您是否使用空格來獲取輸入?當我使用製表符輸入數字列時,它們自然是左對齊的。 – NorthGuard

+0

@inTide,是空格(我在緩衝區中不使用製表符) – Reman

回答

2

使用Align和AlignMaps插件:選擇使用V,然後\ anum(AlignMaps自帶Align)。 \ anum的一個優點是它也處理小數點(逗號)和科學記數法。

+0

你的插件很棒。它可以做很多事情,但不易於理解Tabular。我發現的另一個缺點是你不能把地圖放在命令行p.e中。在menu.vim或vimrc中使用它們。而且......這個插件使用了很多以不同字母開頭的地圖。我希望他們會更容易記住(或由用戶更改)。我不喜歡DrChip菜單。 (更糟糕的是......我之前已經嘗試過\ anum,唯一不知道我必須選擇linewise的。) – Reman

3

您可以查看Tabularize插件。所以,如果你有類似

45 209 25 1 
2 4 2 3 
34 5 300 5 
34 120 34 12 

只是在視覺模式選擇那些線和類型:Tab/,它會格式化爲

45 209 25 1 
2 4  2  3 
34 5  300 5 
34 120 34 12 

此外,它看起來就像你不具有同等數量當前分隔數字的空間。所以,你使用插件之前,與the following regex替換所有單個空格多個空格:

%s![^ ]\zs \+! !g 
+0

請參閱我的問題。 (順便說一句...我有對齊和tabularize插件,但無法找到如何解決我的問題)。 – Reman

5

看一看在align插件,它可以做到這一點,更。在您的實用帶上的偉大工具!

找到here

經過一番認真vimhelp /閱讀中,我找到了正確的AlignCtrl映射... 直觀地選擇表,例如通過使用ggVG,然後做一個\Tsp<leader>Tsp

然後我得到這個:

45 209 25 1 
    2  4  2 3 
34  5 300 5 
34 120 34 12 

從vimhelp:

\Tsp : use Align to make a table separated by blanks |alignmap-Tsp| 
     (right justified) 
+0

'align'插件很不錯,但'Tabularize'插件(由yoda提到)非常出色。 – Jeet

3

隨着Align plugin你可以選擇你要對齊的行和打:

<Leader>Tsp

從Align.txt

\Tsp : use Align to make a table separated by blanks |alignmap-Tsp| 
      (right justified) 

(幫助提\,因爲它是默認的領導者,但如果你已經改成了別的東西,你必須做出相應的調整)

只是想在我安裝,我得到以下結果:

45 209 25 1 
2  4  2 3 
34  5 300 5 
34 120 34 12 

在我看來對齊插件是偉大的,但「排列圖」和各種命令是不是真的很容易記住。

+0

是的,我同意。 DrChip(爲什麼他叫他自己的Dr.chip?))創造了很好的東西,但大多數事情都很難找到,理解並且不能實現。 – Reman

2

我覺得做的最好的事情就是先吃掉所有的多個空格與

:{range}s/ \+/ /g 

然後調用Tabularize

:Tab//r1 

或更改rl