Vim编辑器模式说明

到目前为止,在我们以Vim为中心的教程中,我们讨论了编辑器的Modeline功能,以及如何使用插件扩展Vim的功能集。 然而,众所周知,Vim提供了大量内置功能; 所以请进一步讨论,在本教程中,我们将讨论编辑器可以启动的可用模式。

But before we do that, please note that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 14.04, and the Vim version we've used is 7.4.

Vim中兼容和不兼容的模式

为了正确理解上述Vim模式,您首先必须了解编辑器初始化过程的一个重要方面。

系统和本地vimrc

所涉及的方面是:启动Vim时,编辑器会搜索系统级的“vimrc”文件,以进行系统级的默认初始化。

该文件通常位于系统上的$ VIM / vimrc路径上,但如果不是这样,那么可以通过在Vim中运行:version命令找到确切的位置。 例如,在我的例子中,这是生成的命令的输出的相关摘录:

...
...
...
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
...
...
...

所以系统'vimrc'文件确实位于$ VIM / vimrc ,但是我检查了$ VIM环境变量未设置在我的机器上。 所以在这种情况下 - 正如您在上面的输出中可以看到的那样 - $ VIM有一个回落的值,在我的例子中是/ usr / share / vim 。 当我尝试在此路径上搜索'vimrc'时,我观察到该文件存在。 所以这是我的系统vimrc,正如我前面提到的 - 在Vim启动时被读取。

在系统vimrc被解析之后,编辑器会查找一个用户特定的(或本地的)'vimrc'文件。 搜索本地vimrc的顺序是:环境变量VIMINIT,$ HOME / .vimrc,环境变量EXINIT和名为“exrc”的文件。 通常,它是$ HOME / .vimrc或〜/ .vimrc存在并被视为本地vimrc。

我们说什么兼容性

正如我们正在讨论的Vim的兼容和不兼容的模式,值得了解这些模式启用和禁用什么样的兼容性。 为此,应该首先意识到Vim是一个简短的V i IM证明,正如全名所示,编辑器是Vi编辑器的改进版本。

通过改进,Vim提供的功能集比Vi更大。 为了更好地了解两位编辑之间的差异,请来这里

所以在讨论Vim 兼容和不兼容的模式时,我们所说的兼容性是Vim与Vi的兼容性。 当以兼容模式运行时,Vim的大部分增强和改进将被禁用。 但是,请记住,在这种模式下,Vim不会简单地模拟Vi - 该模式基本上设置 了Vi编辑器工作方式的 一些 默认选项。

不兼容的模式 - 不用说 - 使Vim工作,而不是Vi兼容,使其所有的增强/改进/功能可用于用户。

如何启用/禁用这些模式?

尝试在Vim中运行:help compatible命令,您应该看到以下语法:

'compatible' 'cp' boolean (default on, off when a |vimrc| or |gvimrc|
file is found)

因此,说明默认情况下兼容模式为ON,但当发现vimrc文件时,该模式将被关闭。 但是我们在讨论哪个vimrc? 答案是本地vimrc。 了解:help compatible 命令提供的详细信息, 您将找到以下行,这应该使事情更清楚:

Effectively, this means that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim defaults,otherwise it will use the Vi defaults. (Note: This doesn't happen for the system-wide vimrc or gvimrc file, nor for a file given with the |-u| argument).

所以,实际发生的是,每当Vim启动时,它首先解析系统vimrc文件 - 此时兼容模式默认为ON。 现在,每当找到用户(或本地)vimrc时,不兼容的模式将被打开。 :help compatible-default命令使得它很清楚:

When Vim starts, the 'compatible' option is on. This will be used when Vim starts its initializations. But as soon as a user vimrc file is found, or a vimrc file in the current directory, or the "VIMINIT" environment variable is set, it will be set to 'nocompatible'.

如果要覆盖默认行为,并在编辑器开始解析系统vimrc文件时打开nocompatible模式,可以通过在开始时向该文件添加以下命令来完成此操作:

:set nocompatible

其他有用的细节

以下是有关这些模式的更多有用的详细信息:

But there is a side effect of setting or resetting 'compatible' at the moment a .vimrc file is found: Mappings are interpreted the moment they are encountered. This makes a difference when using things like "<CR>". If the mappings depend on a certain value of 'compatible', set or reset it before
giving the mapping.

The above behavior can be overridden in these ways:
- If the "-N" command line argument is given, 'nocompatible' will be used, even when no vimrc file exists.
- If the "-C" command line argument is given, 'compatible' will be used, even when a vimrc file exists.
- If the "-u {vimrc}" argument is used, 'compatible' will be used.
- When the name of the executable ends in "ex", then this works like the "-C" argument was given: 'compatible' will be used, even when a vimrc file exists. This has been done to make Vim behave like "ex", when it is started as "ex".

结论

同意,有可能你可能没有发现自己处于一种情况,在这种情况下,您将会启动Vim的Vi兼容模式,但这并不意味着您应该对编辑器的初始化过程无知。 毕竟,你永远不知道这个知识可能是你的帮助。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏