定制 vi 和 Vim 编辑器
来源:互联网 发布:算法复杂性 Johnson 编辑:程序博客网 时间:2024/05/08 08:33
vi 和 Vim 定制的类型
vi 和 Vim 编辑器在文本文件或环境变量中存储定制(这将在下一节中讨论)。每个 vi 或 Vim 配置文件都可以包含任何数量的配置和定制命令类型,如 表 1 所示。
表 1. 配置和定制命令
ab
在 Insert 模式下输入文本时若遇到特定字符序列,可定义缩略词。这些缩略词的功能如同 Microsoft® Word 中的 AutoCorrect 特性。map
将现有 vi 或 Vim 命令分配给一个自定义键或定义您自己的自定义命令。参见 “定制键绑定和创建命令” 了解更多信息。set
设置一个 vi 或 Vim 变量。根据变量类型及其使用方式,可以通过简单地命名特定变量或指定和分配一个显式值来设置变量。参见 “设置 vi 和 Vim 配置选项” 了解更多信息。您可以在一个 vi 或 Vim 配置文件中的命令内穿插配置命令和注释。在 Vim 配置文件中,双引号(")后面的任何字符出现在任何地方都被看作是一条注释,而标准 vi 配置文件中的注释必须将双引号作为当前行的第一个字符。标准 vi 配置文件不能包含任何空行,而在 Vim 配置文件中则是可以的。
Vim 编辑器支持额外的关键字,允许您利用原始 vi 编辑器中没有的功能,包括 表 2 中所示的那些。
表 2. Vim 支持的额外关键字
autocmd
基于您正在编辑的文件类型自动执行特定命令。参见 下载 部分获取 sample.vimrc 文件,其中包含一个 autocmd
示例。filetype
在编辑特定类型的文件时加载和启动提供额外功能的各种插件。function
定义一个可映射到一个关键命令的自定义函数。syntax
启动或关闭语法高亮显示。Vim 使用的配置文件也支持一个丰富的内部函数集,可在条件表达式中使用。这些让您可以编写自己的函数并在不同的上下文中执行它们。参见 参考资料 部分的链接,了解有关这种条件句的更多信息。
vi 和 Vim 的启动文件
您可以在环境变量、配置文件或两者中定义前一节讨论的 vi 和 Vim 配置选项。vi 和 Vim 都使用一系列环境变量和配置文件加载定制和共享许多相同的配置序列,不过 Vim 使用一个更广泛的集合。
默认情况下,vi 和 Vim 编辑器为配置信息按列出的顺序检查 表 3 中的位置。
表 3. vi 和 Vim 为配置信息检查的位置
-u
选项调用的特定文件(仅限 Vim):如果使用 -u
选项进行调用,后面紧跟配置文件的名称,Vim 会忽略其余配置序列,而仅从指定文件加载设置。要跳过所有配置文件,您可以将 NONE
指定为 -u
选项的参数。
您可以阻止标准 vi 加载任何配置文件,方法就是将 EXINIT
环境变量设置为 ":set noexrc"
字符串,然后执行 vi。如果您在使用 Bash shell,以下示例通过命令行执行该操作:
EXINIT=":set noexrc" vi file1.txt
VIMINIT
环境变量(仅限 Vim):一个环境变量,由一个或多个配置命令序列组成。如果设置了该环境变量,Vim 不再寻找任何后续配置文件或检查其他环境变量。4$HOME/.vimrc(仅限 Vim):一个名为 .vimrc 的文件,位于用户的主目录中,包含配置选项。如果找到该文件,Vim 不再寻找任何后续配置文件或检查其他环境变量。参见 下载 部分获取 sample.vimrc 文件。5EXINIT
环境变量由一个或多个配置命令序列组成的一个环境变量。6$HOME/.exrc一个名为 .exrc 的文件,位于用户的主目录中,包含配置选项。如果找到该文件,vi 和 Vim 不再寻找任何后续配置文件,除非在该配置文件中设置了 exrc
选项。参见 下载 部分获取 sample.exrc 文件。7.exrc一个名为 .exrc 的文件,位于当前工作目录中,包含配置选项。(如果您在 Microsoft Windows® 系统上使用 Vim,该文件的名称为 _exrc.)。如果之前的配置指令或文件设置了 exrc
选项(或者如果您在从主目录启动 vi 且那里有一个 .exrc 文件,因而匹配搜素序列中的以下步骤),才会读取当前目录中的 .exrc 文件。这些令人印象深刻的一系列备选方案使得为 Vim 配置系统级默认设置尤为简单,同时也能实现 Vim 与标准 vi 配置文件之间的一些智能交互。例如,当我的主目录不位于网络文件系统中时,我将 shell 和应用程序的所有配置文件复制到这些系统中,在那里我有帐户。有些系统使用 vi,而对其他系统提供 Vim(作为 vi)。因此,我将所有特定于 vi 的配置选项放到一个 .vimrc 文件中,并将以下行放到我的 .vimrc 文件的开头:
so .exrc
这使得 Vim 在加载我的 .vimrc 文件中剩余部分的配置命令之前,读取存储在我的 .exrc 文件中的所有配置命令。在仅存在 vi 的系统上,我的 .exrc 文件正常读取,.vimrc 文件被忽略。在我使用 Vim 时,在我的 .vimrc 文件开头加载配置命令能使在两个文件中都存在的键映射被更精致的 Vim 版本所覆盖。
设置 vi 和 Vim 配置选项
set
命令使用户能够设置内部 vi 和 Vim 变量。变量根据不同的类型以不同方式予以设置:
- 设置为 on 或 off 的变量由
set variable
命令设置,使用set novariable
命令取消设置。 - 取值的变量由
set variable=value
命令设置。
例如,set list
命令设置列表选项,该选项告诉 vi 或 Vim 显示表示行尾的字符($
)和未扩展标签(^I
)字符。(在 Vim 中,该选项还显示行尾空白。)list
选项不需要值 — 仅仅设置它就足够激活功能了。您可以执行 set nolist
命令取消设置 list
选项。
其他变量采用显式值或值类型,赋值方式是使用等号(=)后面紧跟值或逗号分隔的值列表。例如,在 Vim 编辑器中,您可以配置 list
命令使用的字符,通过设置 listchars
变量的值来表示行尾,行尾空白和未扩展标签。以下命令将未扩展标签显示为 >>
,将行尾空白显示为 !
,将行尾显示为 $
:
set listchars=tab:>>,trail:!,eol:$
为查看您可以在 vi 或 Vim 中设置的所有选项的当前值,使用 vi 或 Vim 中的 :set all
命令。要显示特定选项的当前值,使用 f:set option?
命令。要显示通过默认值修改的所有选项,使用 :set
命令。
定制键绑定和创建命令
map
命令使用户能够绑定现有或新命令到指定键或组合键,对于 vi 的命令模式,使用 map key-sequence command
语法,对于 vi 的插入模式,使用 map! key-sequence command
。
下面是 Vim 的一些 map
命令样例:
map <C-T> hhxpmap <F5> !}fmt <CR>
这些中的第一个将键序列 control-t 映射到 vi 命令序列 hhxp
,这颠倒了当前光标位置前面的两个字符的顺序(正如 Emacs 中的 control-t)。第二个将 F5 键映射到一个键序列,该键序列调用 fmt
命令来重新格式化当前段落。
标准 vi 和 Vim 的配置文件中的 map
命令之间的一个重要区别在于,正如前面的示例所示,Vim 支持尖括号内的键标识符,以识别在某些情况下可能是不可打印字符的键。vi 需要您真正插入控制序列(通过按下 control-v 后面紧跟键序列来完成)。map
命令样例的 vi 版本如下所示:
map ^T hhxpmap ^@ !}fmt ^M
定义缩略词
ab
命令允许您为字符较长但不常用的术语、代码段、拼写更正等确认缩略词。每当输入一个空格或标点符号,在插入模式下输入文本时您定义的缩略词就会扩展开来。例如,我最喜欢的一些缩略词是:
ab het theab teh the
在标准 vi 中,缩略词仅在插入模式下可行,但是在 Vim 中,它们在替换模式和命令行模式下也可行。Vim 编辑器提供 cab
(command-line-abbreviation)、iab
(insert-mode abbreviation) 和 rab
(replace-mode abbreviation) 命令,允许您限制将特定缩略词扩展为 Vim 中的特定模式。
- 定制 vi 和 Vim 编辑器
- vi和vim编辑器
- vi和vim编辑器
- vi和vim编辑器
- vi和vim编辑器
- vi和vim编辑器
- vi和vim编辑器
- vi和vim编辑器小结
- vi和vim编辑器(4)
- 4、 VI、VIM编辑器:VI、VIM编辑器的介绍、VI、VIM扥使用和常用快捷键
- 学习vi和vim编辑器(1):vi文本编辑器
- 定制vi编辑器
- 学习vi和vim编辑器2
- 文本编辑器Vi和Vim(1)
- 文本编辑器vi和vim(2)
- 文本编辑器vi和vim(3)
- Linux下的编辑器:vi和vim
- vi 和 vim 编辑器的使用
- 第七周 项目 1 - 建立顺序环形队列算法库(补)
- 前端学习
- 阿姆达尔定律
- Android中的Selector用法
- 本博客的作用
- 定制 vi 和 Vim 编辑器
- Sublime Text 3安装插件指南
- 十步让你成为Oracle 10g DBA
- Hadoop的安装与测试
- IEnumerable和IEnumerator 详解
- 利用回调获取自拟定Dialog的返回值
- 梯度
- Hibernate注解方法使用总结
- 区间,坐标(流星,LA 3905)