说明:
最近我从git存储库中获取了一个.vimrc文件,到目前为止它已经发现它非常有用。随附的一个有用工具是它在您编写文件时自动删除尾随空格。
但是,我刚刚开始使用markdown,它提供了如何编写文本文件的清晰格式,使得将这些文件转换为不同类型(如html)变得很容易。
问题是降价使用两个尾随空格来表示换行符。我的.vimrc会自动删除这些内容。我找到了这样做的autocmd。它是:
autocmd BufWrite * :call DeleteTrailingWS()
DeleteTrailingWS是实际删除空格的函数。
我的问题:
如何修改此选项,以便在文件类型不降价时仅运行/设置此autocmd? (.MD) 请以这种方式解释,以便我可以调用泛型函数,而不仅仅是上面的函数。另外,如何使用多种文件类型执行此操作。例如,仅当文件不是.md,.abcd或.efgh?
类型时才运行/设置此命令谢谢大家。
答案 0 :(得分:5)
只需在自动命令中检查文件类型:
autocmd BufWrite * if &ft!~?'markdown'|:call DeleteTrailingWS()|endif
答案 1 :(得分:2)
当你想要除了一些文件类型之外,克里斯蒂安的答案很有效。对于另一种情况,仅为某些文件类型定义autocmds,通常的方法是通过
定义缓冲区本地autocmds:autocmd BufWrite <buffer> call ...
可以通过:autocmd Filetype ... autocmd ...
中的其他前置~/.vim/ftplugin/...
或文件类型插件来完成此操作
答案 2 :(得分:2)
要获得强大的解决方案,请查看我的DeleteTrailingWhitespace plugin。与ShowTrailingWhitespace plugin一起,它已经检测到Markdown等文件类型(以可自定义的方式),然后添加一个异常(比简单地关闭它更精细;即允许两个或更多空格,但仍然突出显示Markdown中的尾随标签)。
答案 3 :(得分:0)
auto命令中的*
指定要运行的文件类型,因此您只需将其替换为*.md
。
autocmd BufWrite *.md :call DeleteTrailingWS()