2012-07-31 63 views
7

Tôi đang tạo một tệp cú pháp tùy chỉnh cho vim và để làm cho mã dễ đọc hơn, tôi muốn nói với vim cách tự động nhập mã. Ngay bây giờ, tôi thường tái-indent gg=G'' trong vim chỉ được thoát khỏi tất cả các khoảng trắng ở đầu mỗi dòng:Tạo cú pháp vim tùy chỉnh: Tôi có thể đặt các quy tắc tự động thụt lề tùy chỉnh không?

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
countX = 0; 
IF (@("X_19") = "X") THEN 
countX += 1; 
END 
IF (@("X_20") = "X") THEN 
countX += 1; 
END 
IF (@("X_21") = "X") THEN 
countX += 1; 
END 
... 

Tôi muốn thiết lập nó để bình luận (bắt đầu có dấu *) không thụt vào ở tất cả (không có khoảng trống ở đầu dòng), nhưng phần còn lại được thụt vào dựa trên IF và END. Cùng mã, thụt vào đúng (giả thậm chí IF đầu tiên là trong vòng một lớn hơn NẾU/block END):

IF (@("X_17") = "X") THEN 
*Make sure only one is selected 
     countX = 0; 
     IF (@("X_19") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_20") = "X") THEN 
      countX += 1; 
     END 
     IF (@("X_21") = "X") THEN 
      countX += 1; 
     END 
     ... 

Tôi có cú pháp higlighting thiết lập, và từ khóa và chức năng built-in đã là một phần của một dal .vim. Đây là dal.vim hiện tại:

http://pastebin.com/PEcSvqM9

Có cách nào để thay đổi những gì tôi có mã mà sẽ tự động thụt lề trong khối/END IF, trong khi vẫn giữ tất cả các ý kiến ​​không có khoảng trắng ở đầu ?

Câu hỏi thưởng: Làm cách nào tôi có thể thiết lập mã gấp để theo dõi các khối IF/END đó? Ngay bây giờ tôi đang làm zf2j để gấp mã này.

+1

Nhận xét không có từ chối là một lựa chọn rất lạ. Tôi sẽ không bao giờ thích nó vì nó phá vỡ đọc mã, trừ khi tôi không có các biến thể khác, tất nhiên. – ZyX

+1

Tôi đồng ý hoàn toàn, nhưng đó không phải là lựa chọn của tôi. Kịch bản Dal phàn nàn nếu nhận xét được thụt lề. – maccam912

Trả lời

2

Bạn phải viết một plugin thụt đầu dòng và đặt nó vào thư mục con indent. Thông tin khác được giải thích trong

:h 'indentexpr' 

, đó là những gì plugin của bạn nên đặt. Hãy lấy ví dụ từ một trăm tập lệnh thụt đầu dòng được phân phối với vim. Tôi không tự viết các plugin như vậy, vì vậy không thể nói cái nào hữu ích nhất làm ví dụ.

Đối với mã gấp kiểm tra

:h :syn-fold 

Ah, và không đặt thụt vào một tập tin cú pháp. Nó không phải là không thể, nhưng nó chỉ là không đúng chỗ cho loại công việc này.

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