我正在编辑包含一些代码示例的降价文件(如这里)。有没有办法告诉vim,在编辑markdown文件时,将textwidth = 80设置为除我保留代码语法的位置之外的所有内容?例如:
Here is a text within a markdown file // textwidth=80
puts 'Hello World' // textwidth is not specified
您可以使用以下命令动态更改'textwidth'
设置:autocmd
:
:autocmd CursorMoved,CursorMovedI <buffer> let &textwidth = (getline('.') =~# '^ ' ? 0 : 80)
这将检查 Markdown 代码(缩进 4 个空格),然后清除 textwidth。
我不知道如何简单地设置tw
选项以满足您的要求。但是我想出了一个功能,它可以做你想做的事:
function! WrapMD()
let x=&tw
let &tw=80
normal! gqq
let &tw=x
endfunction
此功能仅tw=80
在当前行上进行格式化,之后恢复您的原始tw
设置。
您可以获取该功能(或将其放在您的 vimrc 中),然后执行以下操作:
:v/\v^( {4}|\t)/call WrapMD()
在您想要格式化您的 MD 文本的任何时候。
您还可以为此创建映射或将其放入autocmd
on 事件中BufWritePre
。
在这里,我在测试功能时制作了一个 gif:
我经常使用 pandoc 来整理 markdown:pandoc -t markdown
会包装 markdown,但不会包装代码块。它还可以很好地整理列表和块引号。vim-pandoc 插件设置'equalprg'
为pandoc -t markdown --reference-links
.