Theo WIKI , các tập lệnh có thể được gấp lại dựa trên cú pháp. Có ai có một giải pháp để gấp các tài liệu Python?
Về cơ bản, tất cả những gì tôi cần là gấp lại """ text between triple quotation marks """
, như thế này:
Cảm ơn.
Theo WIKI , các tập lệnh có thể được gấp lại dựa trên cú pháp. Có ai có một giải pháp để gấp các tài liệu Python?
Về cơ bản, tất cả những gì tôi cần là gấp lại """ text between triple quotation marks """
, như thế này:
Cảm ơn.
Câu trả lời:
Có một vài yếu tố thú vị khi chơi mà chúng ta nên xem xét khi chơi với các nếp gấp (chúng rất phức tạp và không dễ hiểu nếu không đào sâu vào các tài liệu ..)
foldmethod
để syntax
là vấn đề của tôi khi tôi đang chiến đấu lần nhưng cho phép hãy xem các tài liệu để biết thêm ..Cú pháp gấp của SYNTAX
Một nếp gấp được xác định bởi các mục cú pháp có đối số "nếp gấp". |: đồng bộ hóa |
Mức độ gấp được xác định bởi các nếp gấp lồng nhau. Việc lồng các nếp gấp được giới hạn với 'Foldnestmax'.
Hãy cẩn thận để xác định đồng bộ cú pháp thích hợp. Nếu điều này không được thực hiện đúng, các nếp gấp có thể khác với tô sáng được hiển thị. Điều này đặc biệt có liên quan khi sử dụng các mẫu khớp với nhiều hơn một dòng. Trong trường hợp nghi ngờ, hãy thử sử dụng đồng bộ hóa brute-force:
:syn sync fromstart
Điều chính cần lưu ý là sync fromstart
đây là một trình trợ giúp hữu ích nếu bạn có regex phù hợp với toàn bộ tệp và chỉ muốn bắt tiêu đề. Trong trường hợp của bạn, bạn sẽ có thể bỏ qua điều này nhưng chỉ cần một cái gì đó để nhận thức được.
Vì điều """
này khá dễ đoán nên chúng ta có thể đơn giản hóa start
và end
để trông giống như thế này:
syn region foldImports start='"""' end='"""' fold keepend
Đối với cả start
và end
chúng tôi chỉ đang cố gắng khớp trên '"""'
(hoặc regrec) cho các thẻ script. Tôi đã không kiểm tra đoạn mã trên vì tôi không phải là một con trăn nhưng tôi cá là bạn có thể tìm ra nó từ đây.
foldingmethod
để syntax
trong bộ đệm.
fold
thêm vào các tùy chọn, và nó hoạt động khá tốt đối với tôi.
Đây là một phương pháp tốt hơn sẽ bảo toàn tất cả các phần tô sáng bên trong các chuỗi ba trích dẫn:
syn region pythonString matchgroup=pythonTripleQuotes
\ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend fold
\ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
Thêm phần này vào ~/.vim/after/syntax/python.vim
.
Lệnh này được lấy chính xác từ /usr/share/vim/vim74/syntax/python.vim
và chỉ có fold
từ khóa được thêm vào. Tại sao điều này bảo tồn nổi bật khi câu trả lời của Dan không? Điều quan trọng là cái này có:
contains=pythonEscape,pythonSpaceError,pythonDoctest
Thông thường, Vim chỉ áp dụng một vùng cú pháp, nhưng với contains=
bạn có thể nói với nó rằng một vùng cú pháp có thể chứa các vùng cú pháp khác.
Nó cũng được đánh dấu là String
vì nó:
HiLink pythonString String
Chỉ xác định một vùng cú pháp là không đủ, bạn cần liên kết vùng này với một nhóm đánh dấu .