2012-01-22 38 views
24

Tôi có xu hướng căn chỉnh mã trên các biển báo bằng nhau để dễ đọc hơn. Từ này:Căn chỉnh văn bản trên một dấu bằng với vim

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

Để này:

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

Có một cách dễ dàng để làm điều này trong vim?

Trả lời

33

Plugin tốt nhất mà tôi đã tìm thấy cho đến thời điểm này là Tabular.vim.

Cách dễ nhất để cài đặt nó là sử dụng plugin Pathogen và sau đó nhân bản kho lưu trữ git bảng để ~/.vim/bundle/tabular. Hướng dẫn đầy đủ trong README mầm bệnh.

Sau khi nó được cài đặt, sử dụng nó chỉ là một vấn đề đặt con trỏ của bạn ở đâu đó trong đoạn bạn muốn sắp xếp và chạy:

:Tab /= 
+2

Plugin này hoạt động tuyệt vời! Bạn cũng có thể nhập Tab trong khi ở chế độ trực quan để căn chỉnh văn bản được đánh dấu. – ericraio

13

Tôi tin rằng điều này có thể dễ dàng thực hiện với plugin Tabular. Here it is in action.

Chọn phạm vi trong chế độ trực quan (không thực sự cần thiết), và làm:

:Tabularize /= 

Plugin có thể thực sự tìm ra phạm vi đúng ngày của riêng mình thường xuyên, mà không cần phải chọn nó bằng mắt hoặc chỉ định một phạm vi với lệnh cũ.

10

Đây không phải là cách dễ nhất để làm điều này, nhưng nó có thể được thực hiện mà không cần bất kỳ plugin nào.

  • Sử dụng V:s/=/ =/ để chèn một khoảng trắng trước mỗi dấu bằng.
  • Sử dụng Ctrl-V để chọn cột bạn muốn di chuyển bằng dấu.
  • Nhấn << để "ẩn" cạnh bên phải của mỗi phương trình đối với cột bạn đã chọn, sau đó nhấn . nhiều lần cho đến khi dấu bằng được xếp hàng trong cột đó.
4

Một plugin thay thế cho dạng bảng:

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

Từ các tài liệu:

Ví dụ, glip= sẽ biến

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

vào

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

Bạn có thể sử dụng Align Vim plugin để căn chỉnh các khối như vậy, ví dụ: bằng cách nhập

vip:Align = 

ở chế độ lệnh, khi con trỏ được đặt bên trong khối được căn chỉnh.

Nơi vip chuyển sang chế độ ảo và chọn đoạn hiện tại. Lệnh Align khá mạnh mẽ, ví dụ: bạn cũng có thể chỉ định nhiều mô hình, mô hình được hiểu là biểu thức thông thường, vv

1

Install tabularize plugin và sửa đổi ý chính bởi tpope một cái gì đó như thế này:

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 
Các vấn đề liên quan