初始化不一致
Inconsistent initialization
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/Contents/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
.)
我找到了部分答案。 (我会 post 在这里为任何有类似问题的人提供,但我不希望对问题或答案进行投票。)
help initialization
说,除此之外:
If Vim was started with "-u filename", the file "filename" is used.
All following initializations until 4. are skipped. $MYVIMRC is not
set.
那一点和 4. 之间的大部分内容与我的情况无关;这些是仅在特殊情况下才会发生的步骤。但是,该点和 4 之间的一项是:
b. For Unix, MS-DOS, MS-Windows, OS/2, VMS, Macintosh, RISC-OS and Amiga
the system vimrc file is read for initializations. The path of this
file is shown with the ":version" command.
所以使用-u
时系统初始化文件不是运行。 (这仍然没有完全回答我的第一个问题,它提到了我系统上的系统初始化文件。)
在任何预期位置都没有 vimrc
,Vim 来源:
$VIM/vimrc
$VIMRUNTIME/defaults.vim
...
这是 Vim 8.0 中的新功能。在该版本之前,Vim 只会在这种情况下获取 $VIM/vimrc
。据称,该新功能背后的原因是为不常使用的用户提供更有用的默认值,而不要求他们编写自己的 vimrc
.
参见 :help defaults.vim
。
在预期位置之一有一个 vimrc
(假设 ~/.vimrc
但它可以是 ~/.vim/vimrc
),Vim 来源:
$VIM/vimrc
$HOME/.vimrc
...
对于频繁使用的用户(无论是否有经验)来说,这是最佳方案:您可以获得基本行为以及所有您喜欢的东西。
当使用 -u
将 Vim 指向特定的 vimrc
时,Vim 仅来源特定的 vimrc
.
这是绝对主义场景,让您可以完全控制 Vim 的设置。我不会向没有经验的用户推荐它。
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/Contents/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
.)
我找到了部分答案。 (我会 post 在这里为任何有类似问题的人提供,但我不希望对问题或答案进行投票。)
help initialization
说,除此之外:
If Vim was started with "-u filename", the file "filename" is used. All following initializations until 4. are skipped. $MYVIMRC is not set.
那一点和 4. 之间的大部分内容与我的情况无关;这些是仅在特殊情况下才会发生的步骤。但是,该点和 4 之间的一项是:
b. For Unix, MS-DOS, MS-Windows, OS/2, VMS, Macintosh, RISC-OS and Amiga the system vimrc file is read for initializations. The path of this file is shown with the ":version" command.
所以使用-u
时系统初始化文件不是运行。 (这仍然没有完全回答我的第一个问题,它提到了我系统上的系统初始化文件。)
在任何预期位置都没有 vimrc
,Vim 来源:
$VIM/vimrc
$VIMRUNTIME/defaults.vim
...
这是 Vim 8.0 中的新功能。在该版本之前,Vim 只会在这种情况下获取 $VIM/vimrc
。据称,该新功能背后的原因是为不常使用的用户提供更有用的默认值,而不要求他们编写自己的 vimrc
.
参见 :help defaults.vim
。
在预期位置之一有一个 vimrc
(假设 ~/.vimrc
但它可以是 ~/.vim/vimrc
),Vim 来源:
$VIM/vimrc
$HOME/.vimrc
...
对于频繁使用的用户(无论是否有经验)来说,这是最佳方案:您可以获得基本行为以及所有您喜欢的东西。
当使用 -u
将 Vim 指向特定的 vimrc
时,Vim 仅来源特定的 vimrc
.
这是绝对主义场景,让您可以完全控制 Vim 的设置。我不会向没有经验的用户推荐它。