Làm thế nào người ta có thể tạo hàm gấp của vim - khi sử dụng Foldmethod = cú pháp - cũng ẩn một dòng mới sau mỗi hàm, if-other và struct (sử dụng Go).
Làm thế nào người ta có thể tạo hàm gấp của vim - khi sử dụng Foldmethod = cú pháp - cũng ẩn một dòng mới sau mỗi hàm, if-other và struct (sử dụng Go).
Câu trả lời:
Đây là cách làm điều đó cho C:
/usr/share/vim
) và sao chép nó vào (một lần nữa, trong Unix) ~/.vim/syntax
.syntax region cBlock start="{" end="}" transparent fold
trở thành
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Ở đây, cái đầu tiên \n
khớp với ký tự dòng mới ngay sau dấu ngoặc đóng, cái thứ hai là dòng trống. Điều này sẽ không hoạt động nếu }
được theo sau bởi một nhận xét: khối sẽ vẫn gấp, nhưng dòng mới sau đây sẽ không.
Tôi không có tệp cú pháp cho Go here (theo như tôi có thể nói), nhưng nó sẽ hoạt động theo cách tương tự.
Lưu ý: cách linh hoạt hơn là tạo một tệp mới tại ~/.vim/after/syntax
và chỉ thay đổi định nghĩa vùng, nhưng tôi đã không thành công ở đây. Chỉ sao chép định nghĩa khu vực không hoạt động.
Tôi biết nó đã cũ, nhưng thêm vào giải pháp @ ansgar-esztermann:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
trong ~/.vim/syntax/c.vim
nếp gấp dòng mới (đối với struct
s quá)