làm vim gấp cũng ẩn dòng mới sau chức năng


8

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:


4

Đây là cách làm điều đó cho C:

  • Lấy tệp cú pháp gốc (trong Unix, thường được tìm thấy trong /usr/share/vim) và sao chép nó vào (một lần nữa, trong Unix) ~/.vim/syntax.
  • Thay đổi mẫu "kết thúc" trong định nghĩa vùng cBlock:
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 \nkhớ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/syntaxvà 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.


0

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.vimnếp gấp dòng mới (đối với structs quá)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.