我想要有一个80字符的默认textwidth,除了像txt
这样的几个文件扩展名。除了我第一次编辑(并创建)txt
文件时,下列行似乎可行。如何为.vimrc中的特定文件扩展名设置不同的textwidths?
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
这样做的正确方法是什么?
我想要有一个80字符的默认textwidth,除了像txt
这样的几个文件扩展名。除了我第一次编辑(并创建)txt
文件时,下列行似乎可行。如何为.vimrc中的特定文件扩展名设置不同的textwidths?
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
这样做的正确方法是什么?
使用setlocal
autocmd bufreadpre *.txt setlocal textwidth=0
,而不是set
。
使用setlocal
确保您设置的值在当前缓冲区中设置,而不是在所有缓冲区中设置。
首先,你的范围是错误的;全局默认使用:set
,:autocmd
使用:setlocal
作为缓冲区本地覆盖。
二,BufReadPre
仅用于读取现有文件,而不是新文件;这就是为什么它第一次无法正常工作。相反,你应该使用BufNew,BufRead
;这会捕获这两种情况,并且仅在之后应用文件被读取,所以当您使用模式行或在文件类型插件中设置时它仍然可以工作。
三,:autocmd
解决方案一旦你有很多的自定义,往往会变得笨拙。如果您只想启用某些文件类型的设置,请将相应的:setlocal
命令放入~/.vim/after/ftplugin/<filetype>.vim
,其中<filetype>
是实际的文件类型(例如java
)。 (这需要你有:filetype plugin on
;使用后目录可以让你覆盖由$VIMRUNTIME/ftplugin/<filetype>.vim
做过任何文件类型的默认设置)
谢谢。我唯一需要注意的是,如果您保存了vim会话中的一个存在并进行此更改,则这些设置不会传播到已存在的hpp或cpp文件。但是,如果你使用hpp和cpp文件设置了一个新项目,这是行不通的。我的情况可能有一个解决方法,但是我只打开了2个选项卡和4个文件,因此重新创建会话非常简单。 – 2015-02-12 19:40:02
我改成'setlocal',但问题仍然存在。 – 2013-04-26 15:34:45
@PaulBaltescu:如果您正在编辑一个预先存在的文本文件,单独使用“textwidth”不会修改该行的大小,您必须选择全部并使用'gq'来包装行。 – 2013-04-26 16:31:38