5

除了一些文件扩展名(如txt. 以下几行似乎有效,除了我第一次编辑(和创建)txt文件时。

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

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

4

2 回答 2

10

首先,你用错了范围;用于:set全局默认值:setlocal:autocmd.

其次,BufReadPre仅用于读取现有文件,而不是新文件;这就是为什么它第一次不起作用的原因。相反,您应该使用BufNew,BufRead; 这捕获了这两种情况,并且仅在读取文件后才适用因此当您使用模式行或在文件类型插件中有设置时,它仍然可以工作。

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

于 2013-04-26T18:45:13.193 回答
9

use setlocal

autocmd bufreadpre *.txt setlocal textwidth=0

instead of set.

With setlocal you make sure that the value you're setting is set in the current buffer, not for all buffers.

于 2013-04-26T15:05:55.257 回答