Gấp tài liệu Python


8

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:

nhập mô tả hình ảnh ở đây

Cảm ơn.


1
Bạn có muốn chỉ gấp các tài liệu hoặc tài liệu ngoài việc gấp mã Python không?
Martin Tournoij 17/03/2016

@Carpetsmoker, chỉ cần học thuyết. Cho đến nay, tôi không thể đạt được việc gấp con trăn đáng tin cậy tương tự như các IDE đầy đủ.
ASV

Câu trả lời:


3

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 ..)

  • thiết lập foldmethodđể syntaxlà 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.

  • quét regex từ trên xuống

Vì điều """này khá dễ đoán nên chúng ta có thể đơn giản hóa startendđể trông giống như thế này:

syn region foldImports start='"""' end='"""' fold keepend

Đối với cả startendchú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.


Cảm ơn! Nó hoạt động sau khi thêm dòng vào ~ / .vim / sau / cú pháp / python.vim và tự thiết lập foldingmethodđể syntaxtrong bộ đệm.
ASV

... Nhưng phá vỡ các điểm nổi bật của docstrings. Cuộc sống thật khó khăn.
ASV

chết tiệt .. Cá nhân tôi đã tắt tính năng trong cấu hình của mình với một bình luận tục tĩu về cảm xúc của tôi đối với tính năng này: | hy vọng rằng việc hack regex nhiều hơn một chút có thể khiến mọi thứ hoạt động (id kiểm tra plugin [từ khóa grep gấp] nếu nó gần như ở đó)
Dan Bradbury

Tôi đã sử dụng các định nghĩa vùng cú pháp được đưa ra tại stackoverflow.com/a/16051080/455009 để nhắm mục tiêu các tài liệu được tô sáng dưới dạng các nhận xét, mà không ảnh hưởng đến các chuỗi ba trích dẫn thông thường. Hãy thử những cái có foldthêm vào các tùy chọn, và nó hoạt động khá tốt đối với tôi.
ches

1

Đâ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.vimvà chỉ có foldtừ 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à Stringvì 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 .

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.