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

Pau*_*scu 5 vim

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

setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
Run Code Online (Sandbox Code Playgroud)

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

Ren*_*ger 9

使用 setlocal

autocmd bufreadpre *.txt setlocal textwidth=0
Run Code Online (Sandbox Code Playgroud)

而不是set.

随着setlocal你确保你设置的值在当前缓冲区设置,并不适用于所有的缓冲区.

  • @PaulBaltescu:如果您正在编辑现有的文本文件,则单独使用`textwidth`不会修改行的大小,您必须选择全部并使用`gq`来包装行。 (4认同)

Ing*_*kat 8

首先,你的范围是错误的; 使用:set全球默认并:setlocal在缓冲区局部覆盖:autocmd.

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

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