除了一些文件扩展名(如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.