MacVim 8.0:
如果没有 .vimrc 文件,set
显示:
:set
--- Options ---
autoindent scroll=18 ttymouse=xterm2
helplang=en showmatch wrapmargin=10
langmenu=none ttyfast nowrapscan
backspace=indent,eol,start
fileencodings=ucs-bom,utf-8,default,latin1
pythondll=/usr/local/Frameworks/Python.framework/Versions/2.7/Python
pythonhome=/usr/local/Frameworks/Python.framework/Versions/2.7
如果我创建一个空的 .vimrc 文件,set
显示:
set
--- Options ---
helplang=en scroll=18 ttymouse=xterm2
langmenu=none ttyfast
backspace=indent,eol,start
fileencodings=ucs-bom,utf-8,default,latin1
pythondll=/usr/local/Frameworks/Python.framework/Versions/2.7/Python
pythonhome=/usr/local/Frameworks/Python.framework/Versions/2.7
这与第一种情况的不同之处在于缺少autoindent
、showmatch
和wrapscan
。 为什么会有区别? 这些选项似乎没有在/Applications/MacVim.app/Content/Resources/vim/vimrc 中设置。
使用-u file
启动 vim 应该使用file
作为启动文件。 因此,如果我删除空的 .vimrc——所以现在我没有 .vimrc——并使用-u emptyfile
,其中 emptyfile 是一个空文件,我希望set
会显示上面列出的内容。 但是,set
显示了非常不同的东西:
:set
--- Options ---
helplang=en scroll=18 ttyfast ttymouse=xterm
fileencodings=ucs-bom,utf-8,default,latin1
iskeyword=@,48-57,_,192-255
为什么这与以前的案例不同?
(我为什么关心? 因为我试图弄清楚为什么初始化文件在 .vimrc 时可以正确执行,但当我使用-u
运行它时却没有。
没有在任何预期位置vimrc
,Vim 源:
$VIM/vimrc
$VIMRUNTIME/defaults.vim
...
这是 Vim 8.0 中的新功能。在该版本之前,Vim 只会在这种情况下获取$VIM/vimrc
。据称,该新功能背后的原因是为不经常使用的用户提供更有用的默认值,而无需他们编写自己的vimrc
。
请参阅:help defaults.vim
。
在其中一个预期位置(假设~/.vimrc
但可以~/.vim/vimrc
(vimrc
时,Vim 源:
$VIM/vimrc
$HOME/.vimrc
...
对于频繁的用户来说,这是最佳方案,无论是否经验丰富:您将获得基本行为以及所有花哨的东西。
当使用-u
将 Vim 指向特定vimrc
时,Vim 只获取该特定vimrc
。
这是一个绝对主义的场景,让你完全控制Vim的设置。我不会向没有经验的用户推荐它。
我已经找到了部分答案。 (我会在这里为任何有类似问题的人发布它,但我不希望对问题或答案投赞成票。
help initialization
说,除其他外:
如果 Vim 以 "-u 文件名" 开头,则使用文件 "filename"。 以下所有初始化直到 4。被跳过。$MYVIMRC不是 设置。
该点和 4. 之间的大部分内容与我的情况无关; 这些步骤仅在特殊情况下发生。 但是,在该点和 4 点之间有一个项目。是:
二.适用于Unix,MS-DOS,MS-Windows,OS/2,VMS,Macintosh,RISC-OS和Amiga。 读取系统 VIMRC 文件以进行初始化。 这条路 文件以":版本"命令显示。
因此,使用-u
时不会运行系统初始化文件。 (这仍然没有完全回答我的第一个问题,它提到了我系统上的系统初始化文件。