[Lorem ipsum dolor sit ](http://vi.stackexchange.com/many-links-are-often-very)
看起来不错。但是链接没有完成,所以我输入
-long
,现在Vim 中断了这一行:
[Lorem ipsum dolor sit
](http://vi.stackexchange.com/many-links-are-often-very-long)
由于我的
textwidth=80
设置...虽然断开链接中间标记在技术上是有效的标记,但恕我直言,恕我直言;拥有漂亮外观的源文件有点像markdown。
使用gq时,问题通常甚至更糟:
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)
成为这样:
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)
我有什么办法可以告诉Vim或markdown语法不以此方式断开链接?
也许通过将整个链接(从
[
到)
)视为一个单词。 降价链接的
[this][type]
有相同的问题。#1 楼
过去,函数签名存在类似的问题。这是适合您问题的解决方案。添加到.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
注意,您可能需要更改
'^.*\[.*\](.*)$'
正则表达式。当前,如果链接后有任何文本,则行可能会断开,如您的示例所示。但是,如果正则表达式匹配行内有链接的行,则会出现另一个问题: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
在此示例中,
amet,
之后未插入换行符,应手动添加。