Vim Markdown coi codeblock có hàng rào là bình luận

Sep 09 2020

Tôi sử dụng một định dạng văn bản tự động khá tiện lợi cho Markdown:

(Đã xem https://asciidoc.org/userguide.html#X61)

augroup TXT | au!
  autocmd FileType asciidoc,markdown
    \ setlocal autoindent expandtab tabstop=8 softtabstop=2 shiftwidth=2
    \ textwidth=70 wrap formatoptions=atqn
    \ formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\\|^\\s*<\\d\\+>\\s\\+\\\\|^\\s*[a-zA-Z.]\\.\\s\\+\\\\|^\\s*[ivxIVX]\\+\\.\\s\\+
    \ comments=s1:/*,ex:*/,://,b:#,:%,:XCOMM,fb:-,fb:*,fb:+,fb:.,fb:>
    \ listchars=tab:»·,trail:·
    \ list |
  autocmd FileType asciidoc,markdown silent! %foldopen!
augroup END

Tính năng tự động thụt lề này liệt kê và giữ cho các khối văn bản của tôi ngắn gọn bằng cách tự động chèn các dấu ngắt hoặc xóa chúng khi thích hợp.

Tuy nhiên, hành vi này cản trở tôi khi nhập mã có hàng rào, vì Vim cố gắng hợp nhất các dòng không cách nhau một đoạn với nhau cho đến khi đạt được độ rộng văn bản.

Tôi có thể tắt hoàn toàn định dạng tự động trong mã có hàng rào không? Sẽ comments=trông như thế nào để đối xử với mọi thứ giữa

```
fenced code
```

như một bình luận Vim không nên tự động định dạng? Xem sự vắng mặt formatoptions=-cở trên mà tôi cho rằng Vim sẽ bỏ qua phần bình luận của tôi.

Trả lời

2 MaximKim Sep 14 2020 at 20:19

Tôi e rằng nó là "không thể" để làm với comments. Vấn đề là, nó không phân tích nếu nó có trong những bình luận thực sự không - nó thực sự được coi là những bình luận thực sự. Nó chỉ bị tấn công cho các mục danh sách vì chúng tương tự như asciidoc và đánh dấu xuống các nhận xét giống C:

/*****************************
* comment line 1
* comment line 2
******************************/

Vì vậy, nếu bạn nhấn enter sau dòng chú thích 2, nó sẽ tiếp tục nó ở dòng tiếp theo có thêm "dấu đầu dòng".

Tất nhiên bạn có thể thử triển khai giải pháp của riêng mình:

  1. ánh xạ <CR>ở chế độ chèn đến một chức năng mà bạn phải phân tích môi trường xung quanh, chẳng hạn như tìm kiếm ngược lại để bắt đầu một khối có hàng rào và tắt commentsnếu tìm thấy

  2. hoặc làm điều tương tự mà không có commentsnhưng với việc triển khai chèn dấu đầu dòng của riêng bạn.

Nhưng nó sẽ dễ vỡ hoặc chậm hoặc cả hai.