除了一些文件扩展名(如txt. 以下几行似乎有效,除了我第一次编辑(和创建)txt文件时。
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
这样做的正确方法是什么?
除了一些文件扩展名(如txt. 以下几行似乎有效,除了我第一次编辑(和创建)txt文件时。
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
这样做的正确方法是什么?
首先,你用错了范围;用于:set全局默认值:setlocal和:autocmd.
其次,BufReadPre仅用于读取现有文件,而不是新文件;这就是为什么它第一次不起作用的原因。相反,您应该使用BufNew,BufRead; 这捕获了这两种情况,并且仅在读取文件后才适用,因此当您使用模式行或在文件类型插件中有设置时,它仍然可以工作。
第三,:autocmd一旦您进行了许多自定义,该解决方案往往会变得笨拙。如果您只想启用某些文件类型的设置,请将相应的:setlocal命令放入~/.vim/after/ftplugin/<filetype>.vim,其中<filetype>是实际的文件类型(例如java)。(这要求您拥有:filetype plugin on; 使用after目录允许您覆盖任何由 . 完成的默认文件类型设置$VIMRUNTIME/ftplugin/<filetype>.vim。)
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.