2012-01-22 60 views
24

我傾向於排列在等號代碼更易讀。從這:對齊文本用vim

$ = jQuery.sub() 
Survey = App.Survey 
Sidebar = App.Sidebar 
Main = App.Main 

要這樣:

$  = jQuery.sub() 
Survey = App.Survey 
Sidebar = App.Sidebar 
Main = App.Main 

有沒有一種簡單的方法在vim做到這一點?

回答

33

我迄今發現的最好的插件是Tabular.vim

最簡單的安裝方法是使用Pathogen插件,然後將Tabular git存儲庫克隆到~/.vim/bundle/tabular。病原體自述文件中的完整說明。

它的安裝後,使用它僅僅是一個要對齊把你的光標停在某個段落的物質和運行:

:Tab /= 
+2

這個插件工作的很棒!您也可以在可視模式下鍵入Tab以對齊突出顯示的文本。 – ericraio

13

我認爲這是很容易與Tabular插件來完成。 Here it is in action.

選擇可視模式(實際上沒有必要)的範圍,並做到:

:Tabularize /= 

該插件可以真正找到了自己的往往是正確的範圍,而不需要直觀地選擇,或指定一個範圍到ex命令。

10

這不是做事情的最簡單的方法,但它可以沒有任何插件。

  • 使用V:s/=/ =/在每個等號之前插入一堆空格。
  • 用CTRL-V選擇您想要的等號被移動到列。
  • <<爲「取消縮進」對你選擇的列每個方程的右側,然後按.,直到跡象在列排隊等號。
4

一種替代插件表格:

https://github.com/tommcdo/vim-lion

從文檔:

例如,glip=將轉向

$i = 5; 
$username = 'tommcdo'; 
$stuff = array(1, 2, 3); 

$i  = 5; 
$username = 'tommcdo'; 
$stuff = array(1, 2, 3); 
0

您可以使用Align Vim plugin來對齊這些塊,例如,通過鍵入

vip:Align = 

在命令模式下,當光標放在要對齊的塊內時。

其中vip進入虛擬模式並選擇當前段落。 Align命令非常強大,例如你也可以指定多個圖案,花紋都被解釋爲正則表達式等

1

安裝tabularize插件和tpope修改要點,以這樣的:

inoremap <silent> : :<Esc>:call <SID>align(':')<CR>a 
inoremap <silent> = =<Esc>:call <SID>align('=')<CR>a 

function! s:align(aa) 
    let p = '^.*\s'.a:aa.'\s.*$' 
    if exists(':Tabularize') && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p) 
    let column = strlen(substitute(getline('.')[0:col('.')],'[^'.a:aa.']','','g')) 
    let position = strlen(matchstr(getline('.')[0:col('.')],'.*'.a:aa.':\s*\zs.*')) 
    exec 'Tabularize/'.a:aa.'/l1' 
    normal! 0 
    call search(repeat('[^'.a:aa.']*'.a:aa,column).'\s\{-\}'.repeat('.',position),'ce',line('.')) 
    endif 
endfunction