2011-12-13 35 views
7

Có ai có thiết lập vim của mình theo cách sử dụng các tab cứng như các ký tự thụt đầu dòng, nhưng không sử dụng dấu cách cho căn chỉnh không? Tôi có vấn đề là khi bắt đầu một dòng liên tục như trongVim: Sử dụng các tab cho thụt lề, dấu cách để căn chỉnh với các tệp nguồn C

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ 
|-------|------- whatever /* some additional alignment added automatically */ 

, sau đó cin (mà là điều bắt buộc đối với tôi) cho biết thêm một số liên kết chỉ là cách tôi thích địa vị, nhưng sự liên kết này được tạo ra sử dụng như nhiều tab cứng nhất có thể và lấp đầy phần còn lại bằng dấu cách (như tôi đã cố gắng để hình dung).

Vì vậy, trong ngắn hạn, cin không thực sự dường như để phân biệt giữa thụt đầu dòngalignment. Tôi thực sự muốn rằng tất cả các liên kết thêm trong ví dụ trên là không gian. Bằng cách này, liên kết sẽ được giữ nguyên chính xác khi tạm thời chuyển đổi ts.

Để làm rõ, tôi muốn có thể viết mã sau, không bao giờ nhấn <TAB> hoặc <SPACE> trước ký tự đầu tiên không trống trong bất kỳ dòng nào (và không thực hiện bất kỳ thao tác thủ công nào) :

void foo(int bar) 
{ 
|-------somestatement; 
|-------if (somecondition && (someothercondition || 
|-------      whatevercomesnext)) 
|-------|-------dosomething; 
} 

tôi đã cố gắng ra ctab.vim, nhưng nó tập trung vào chỉnh sửa một dòng liên kết với các tab mềm, mà có vẻ ngớ ngẩn với tôi bởi vì nhãn hiệu liên kết là một công việc nào dành 1 bước tinh tế và không Tab- sàng lọc theo chiều rộng. Tôi không thay đổi cách cin sử dụng các tab và không gian hỗn hợp để căn chỉnh.

Tôi chưa tìm được cách tích hợp để thực hiện điều đó. Có lẽ vẫn còn, có một? Dù sao, tôi nghi ngờ rằng có một plugin mà làm điều đó. Mặc dù tôi thừa nhận không vim-kịch bản bản thân mình và có thể không có đủ kinh nghiệm, tôi phải nói rằng hầu hết các plugin tôi đã cố gắng chỉ messed lên cấu hình soạn thảo của tôi ...

+0

Tôi đang sử dụng 'ctab.vim' bản thân mình (phiên bản 2.6) và dường như làm những gì bạn muốn đạt được, tức là khi nhập đoạn mã ở trên, tôi không – ekoeppen

Trả lời

1

Được rồi, xin lỗi cho câu hỏi. Cuối cùng tôi đã tìm thấy một số tài liệu tốt cho nó.

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

Tóm lại, hiện vim là không đủ linh hoạt cho việc này phải được thực hiện một cách thoải mái.

Giải pháp thay thế của tôi hiện đang sử dụng :set cinoptions=(1 chỉ thêm một đơn vị căn chỉnh khi bắt đầu một dòng liên tục. Bằng cách này, tôi có thể chắc chắn rằng căn chỉnh được thêm vào là một không gian (miễn là tôi không :set ts=1, ít nhất) và thêm số lượng không gian đẹp theo cách thủ công. Điều này vẫn ok về tốc độ và có vẻ là hành vi mất tập trung ít nhất đối với tôi!

+0

Bạn có thể đánh dấu câu trả lời của riêng mình như được chấp nhận! –

3

Ngoài: cino = (1, bạn cũng có thể quan tâm đến tùy chọn 'bảo tồn' và 'copyindent' nếu bạn chưa gặp chúng. Chúng không giải quyết được hoàn toàn vấn đề của bạn, nhưng chúng

+0

Có, tôi đã gặp phải chúng.Nhưng điều đáng tiếc là vẫn còn nhiều quy tắc hơn nữa mà tất cả tính toán thụt đầu dòng và thụt lề với các tab/dấu cách hỗn hợp ... –

Các vấn đề liên quan