如何在.vimrc中为特定文件扩展名设置不同的文本宽度?

时间:2013-04-26 15:01:53

标签: vim

我希望默认文本宽度为80个字符,但txt等文件扩展名除外。除了第一次编辑(和创建)txt文件时,以下行似乎有效。

setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

使用setlocal

autocmd bufreadpre *.txt setlocal textwidth=0

而不是set

使用setlocal确保您设置的值在当前缓冲区中设置,而不是在所有缓冲区中设置。

答案 1 :(得分:6)

首先,你的范围是错误的;使用:set作为全局默认值,使用:setlocal作为:autocmd中的缓冲区本地覆盖。

其次,BufReadPre仅用于读取现有文件,而不是新文件;这就是它第一次不起作用的原因。相反,你应该使用BufNew,BufRead;这会捕获这两种情况,并且仅在读取文件后应用,因此当您使用 modelines 或在 filetype插件中进行设置时它仍然有效

第三,一旦你有很多自定义,:autocmd解决方案往往会变得难以处理。如果您只想为某些文件类型启用设置,请将相应的:setlocal命令放入~/.vim/after/ftplugin/<filetype>.vim,其中<filetype>是实际文件类型(例如java)。 (这要求您拥有:filetype plugin on;在目录之后使用可以覆盖$VIMRUNTIME/ftplugin/<filetype>.vim完成的任何默认文件类型设置。)