Cegah Vim dari memecah tautan tanda tengah pada penurunan harga

16

Katakanlah saya memiliki file penurunan harga ini:

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

Terlihat bagus. Tapi tautan belum selesai, jadi saya mengetik -long, dan sekarang Vim memecah baris:

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

Karena textwidth=80pengaturan saya ... Sementara memecah tag tengah tautan secara teknis adalah penurunan harga yang valid, tampaknya IMHO sangat tidak sedap dipandang; memiliki file sumber yang terlihat bagus adalah semacam titik penurunan harga.

Dengan gqmasalah sering lebih buruk:

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)

Menjadi ini:

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)

Apakah ada cara saya dapat memberitahu Vim atau sintaks penurunan harga untuk tidak memutus tautan dengan cara ini?

  • Mungkin dengan memperlakukan seluruh tautan (dari [ke )) sebagai satu kata.
  • Saya memiliki masalah yang sama dengan [this][type]tautan penurunan harga.
Martin Tournoij
sumber

Jawaban:

9

Di masa lalu saya punya masalah yang sama dengan tanda tangan fungsi. Inilah solusi yang disesuaikan dengan masalah Anda. Tambahkan ke .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

Catatan, Anda mungkin ingin mengubah '^.*\[.*\](.*)$'regex. Saat ini jika ada teks setelah tautan, baris mungkin rusak seperti pada contoh Anda. Namun, jika regex akan mencocokkan garis dengan tautan di mana saja di dalam, masalah lain dapat muncul:

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

Dalam contoh ini, baris tidak dimasukkan setelah amet,dan harus ditambahkan secara manual.

Jarlax
sumber