×

vi 命令手册

vi/vim 命令大全

vim 命令手册

Vim 关于Vim 安装Vim 用法Vim 配置vim 配置.vimrc方案vim 配置.vimrc方案1vim 配置.vimrc方案2Vim 文件合并Vim 技巧和建议Vim 插件Vim 参阅

Vimscript 编程参考

Vimscript 前言Vimscript 鸣谢Vimscript 预备知识Vimscript 打印信息Vimscript 设置选项Vimscript 基本映射Vimscript 模式映射Vimscript 精确映射Vimscript LeadersVimscript 编辑你的Vimrc文件Vimscript AbbreviationsVimscript 更多的MappingsVimscript 锻炼你的手指本地缓冲区的设置和映射Vimscript 自动命令Vimscript 本地缓冲区缩写Vimscript 自动命令组Operator-Pending 映射Operator-Pending 更多映射Vimscript 状态条Vimscript 负责任的编码Vimscript 变量Vimscript 变量作用域Vimscript 条件语句Vimscript 比较Vimscript 函数Vimscript 函数参数Vimscript 数字Vimscript 字符串Vimscript 字符串函数Vimscript Execute命令Vimscript Normal命令Vimscript 执行normal!Vimscript 基本的正则表达式Grep 运算符Operator 第1部分Grep 运算符Operator 第2部分Grep 运算符Operator 第3部分Vimscript 列表Vimscript 循环Vimscript 字典Vimscript 切换Vimscript 函数式编程Vimscript 路径Vimscript 创建一个完整的插件Vimscript 基本插件配置方式用Pathogen配置插件Vimscript 检测文件类型Vimscript 基本语法高亮Vimscript 高级语法高亮Vimscript 基本折叠Vimscript 高级折叠Vimscript 段移动原理Vimscript Potion段移动Vimscript 外部命令Vimscript 自动加载Vimscript 文档Vimscript 发布Vimscript 还剩下什么?

Vimscript 旧社会下的插件配置方式


我们需要讲到的第一件事是如何配置我们的插件。在过去,这会是一次混乱的折腾, 但现在我们有一个工具可以非常方便地安装Vim插件。

我们需要先过一下基本的配置方式,然后我们会讲到如何省下麻烦。

基本配置方式

Vim支持把插件分割成多个文件。你可以在~/.vim下创建许多不同种类的文件夹来放置不同的内容。

我们现在将讲述其中最为重要的几个文件夹,但不会在上面花费太多时间。 当我们创造Potion插件时,我们会逐一认识它们的。

在我们继续前进之前,需要先确定一些用词规范。

我将用"插件"表示一大堆做一系列相关事情的Vimscript代码。 在Vim里,"插件(plugin)"有一个更专业的定义,它表示"~/.vim/plugins/下的一个文件"。

在大多数时间里,我将使用第一个定义。如果指的是第二个定义,我会特意指明。

~/.vim/colors/

Vim将会查找~/.vim/colors/mycolors.vim并执行它。 这个文件应该包括生成你的配色方案所需的一切Vimscript命令。

本书中,我们不会谈到配色方案。如果想创造属于自己的配色方案,你应该从一个现存的配色方案上改造出来。 记住,:help将与你常在。

~/.vim/plugin/

~/.vim/plugin/下的文件将在_每次_Vim启动的时候执行。 这里的文件包括那些无论何时,在启动Vim之后你就想加载的代码。

~/.vim/ftdetect/

~/.vim/ftdetect/下的文件在每次你启动Vim的时候_也会_执行。

ftdetect是"filetype detection"的缩写。 这里的文件_仅仅_负责启动检测和设置文件的filetype类型的自动命令。 这意味着它们一般不会超过一两行。

~/.vim/ftplugin/

~/.vim/ftplugin/下的文件则各不相同。

一切皆取决于它的名字!当Vim把一个缓冲区的filetype设置成某个值时, 它会去查找~/.vim/ftplugin/下对应的文件。 比如:如果你执行set filetype=derp,Vim将查找~/.vim/ftplugin/derp.vim。 一旦文件存在,Vim将执行它。

Vim也支持在~/.vim/ftplugin/下放置文件夹。 再以我们刚才的例子为例:set filetype=derp将告诉Vim去执行~/.vim/ftplugin/derp/下的全部*.vim文件。 这使得你可以按代码逻辑分割在ftplugin下的文件。

因为每次在一个缓冲区中执行filetype时都会执行这些文件,所以它们_只能_设置buffer-local选项! 如果在它们中设置了全局选项,所有打开的缓冲区的设置都会遭到覆盖!

~/.vim/indent/

~/.vim/indent/下的文件类似于ftplugin下的文件。加载时也是只加载名字对应的文件。

indent文件应该设置跟对应文件类型相关的缩进,而且这些设置应该是buffer-local的。

是的,你当然可以把这些代码也一并放入ftplugin文件, 但最好把它们独立出来,让其他Vim用户理解你的意图。这只是一种惯例,不过请尽量体贴用户并遵从它。

~/.vim/compiler/

~/.vim/compiler下的文件非常类似于indent文件。它们应该设置同类型名的当前缓冲区下的编译器相关选项。

不要担心不懂什么是"编译器相关选项"。我们等会会解释。

~/.vim/after/

~/.vim/after文件夹有点神奇。这个文件夹下的文件会在每次Vim启动的时候加载, 不过是在~/.vim/plugin/下的文件加载了之后

这允许你覆盖Vim的默认设置。实际上你将很少需要这么做,所以不用理它, 除非你有"Vim设置了选项x,但我想要不同的设置"的主意。

~/.vim/autoload/

~/.vim/autoload文件夹就更加神奇了。事实上它的作用没有听起来那么复杂。

简明扼要地说:autoload是一种延迟插件代码到需要时才加载的方法。 我们将在重构插件的时候详细讲解并展示它的用法。

~/.vim/doc/

最后,~/.vim/doc/文件夹提供了一个你可以放置你的插件的文档的地方。 Vim对文档的要求是多多益善(看看我们执行过的所有:help命令就知道),所以为你的插件写文档是重要的。

练习

重读本章。我没开玩笑。确保你(大体上)明白我们讲过的每一个文件夹。

作为额外的加分,找一些你正在用的Vim插件看看它们如何组织代码文件。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)