vim中相同文件类型的文本宽度不同

时间:2013-05-21 21:09:09

标签: vim

我正在编辑包含一些代码示例(like here)的降价文件。有没有办法告诉vim,当它正在编辑markdown文件时,将textwidth = 80设置为我保留代码语法的所有内容?例如:

Here is a text within a markdown file // textwidth=80

    puts 'Hello World' // textwidth is not specified

3 个答案:

答案 0 :(得分:2)

您可以使用'textwidth'动态更改:autocmd设置:

:autocmd CursorMoved,CursorMovedI <buffer> let &textwidth = (getline('.') =~# '^    ' ? 0 : 80)

这将检查Markdown代码(缩进4个空格),然后清除textwidth。

答案 1 :(得分:1)

我不知道如何简单地设置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上的BufWritePre

我在测试函数时创建了一个gif:

enter image description here

答案 2 :(得分:1)

我经常使用pandoc来整理markdown:pandoc -t markdown将包装markdown,但不包括代码块。它还可以很好地整理列表和阻止引号。 vim-pandoc插件将'equalprg'设置为pandoc -t markdown --reference-links