初始化不一致



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

这与第一种情况的不同之处在于缺少autoindentshowmatchwrapscan。 为什么会有区别? 这些选项似乎没有在/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时不会运行系统初始化文件。 (这仍然没有完全回答我的第一个问题,它提到了我系统上的系统初始化文件。

最新更新