在~/.vimrc
中,我有两行:
set textwidth=80
au FileType vim set textwidth=200 " I like to live dangerously
当我打开vim时,set tw
会显示200
。但是当我:source ~/.vimrc
时,set tw
会显示80
。使用set colorcolumn=+1
这是一个特别令人烦恼的边缘情况,因为有一次我将不断寻找.vimrc
来编辑.vimrc
,否则我可能会忽略这个问题。
我的问题:我做错了吗?如果是这样,我每次tw
时如何阻止:so ~/.vimrc
更改?
答案 0 :(得分:1)
由于这只是.vimrc
的一个极端情况,我会解决这个问题,将条件重新应用于Vimscript缓冲区的本地设置:
set textwidth=80
au FileType vim setlocal textwidth=200 " I like to live dangerously
if &filetype ==# 'vim'
setlocal textwidth=200
endif
请注意,对于buffer-local选项,您应该使用:setlocal
而不是:set
。否则,在编辑Vimscript后打开的任何新的非Vimscript缓冲区将错误地继承更大的文本宽度。
答案 1 :(得分:0)
可能不是一个很好的解决方案,但你可以明确地防范它。
if !exists("g:conf_loaded")
" do things you only want to do once
set textwidth=80
let g:conf_loaded = 1
endif
或者你可以检测到textwidth
是否仍然是默认值:
if &textwidth == 0
set textwidth=80
endif
答案 2 :(得分:0)
textwidth
设置是缓冲区的本地设置。设置vim文件类型时,您在每个缓冲区上运行autocmd。这将textwidth正确设置为200。然后重新提供~/.vimrc
,将textwidth设置为80. FileType autocmd没有被激活。
解决方案是删除textwidth 80行。