Ngăn Vim phá vỡ liên kết giữa thẻ trong markdown


16

Giả sử tôi có tệp Markdown này:

[Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very)

Trông thật tuyệt. Nhưng liên kết chưa hoàn thành, vì vậy tôi gõ -longvà bây giờ Vim ngắt dòng:

[Lorem ipsum dolor sit
](http://vi.stackexchange.com/many-links-are-often-very-long)

Do textwidth=80cài đặt của tôi ... Mặc dù việc phá vỡ một thẻ giữa liên kết là đánh dấu hợp lệ về mặt kỹ thuật, nhưng nó trông rất khó coi IMHO; có các tập tin nguồn đẹp mắt là loại điểm đánh dấu.

Với gqvấn đề thường là thậm chí còn tồi tệ hơn:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec
[Lorem ipsum dolor sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

Trở thành này:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.
Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec [Lorem
ipsum dolor
sit](http://vi.stackexchange.com/many-links-are-often-very-very-long)

Có cách nào tôi có thể nói với Vim hoặc cú pháp đánh dấu để không phá vỡ liên kết theo cách này không?

  • Có thể bằng cách coi toàn bộ liên kết (từ [đến )) là một từ duy nhất.
  • Tôi có cùng một vấn đề với [this][type]liên kết markdown.

Câu trả lời:


9

Trong quá khứ tôi đã có vấn đề tương tự với chữ ký chức năng. Đây là giải pháp thích ứng với vấn đề của bạn. Thêm vào .vimrc:

au CursorMovedI *.md call ModifyTextWidth() " Use only within *.md files

function! ModifyTextWidth()
    if getline(".")=~'^.*\[.*\](.*)$' " If the line ends with Markdown link - set big value for textwidth
        setlocal textwidth=500
    else
        setlocal textwidth=80 " Otherwise use normal textwidth
    endif
endfunction

Lưu ý, bạn có thể muốn thay đổi '^.*\[.*\](.*)$'regex. Hiện tại nếu có bất kỳ văn bản nào sau liên kết, dòng có thể bị hỏng như trong ví dụ của bạn. Tuy nhiên, nếu regex sẽ khớp các dòng với các liên kết ở bất cứ đâu bên trong, một vấn đề khác có thể xuất hiện:

Some info [here](https://www.google.com). Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris

Trong ví dụ này, ngắt dòng không được chèn sau amet,và nên được thêm bằng tay.

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.