You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
3.9 KiB
66 lines
3.9 KiB
2 years ago
|
# 前言
|
||
|
|
||
|
这是一篇有关 Vim 脚本语言的入门与进阶教程。是“指北”,不是“指南”,所以如果不慎
|
||
|
指错了路,切勿见怪。不过要相信地球是圆的,绕了一圈之后,希望还是能找对目标的。
|
||
|
|
||
|
初学者如果第一章看不懂,建议直接看第二章;如果第二章看不懂,建议直接看第三章;
|
||
|
如果第三章也看不懂,建议直接放弃治疗,汝须先培养对 vim 的信仰习惯。
|
||
|
|
||
|
以下……开始严肃话题。
|
||
|
|
||
|
## 正名约定
|
||
|
|
||
|
Vim 是上古神器之一,且能历久弥新,与时俱进。随着 Vim 的发展,Vim 的脚本也逐渐
|
||
|
发展壮大,支持的功能与特性越来越丰富,俨然成为一种新的或老的实用脚本语言。然而
|
||
|
这语言的名字,网上的称谓似乎还有点五花八门。
|
||
|
|
||
|
为了行文统一与方便,在这里我采用“VimL”(Vim Language 缩写)来表示该脚本语言,用“
|
||
|
Vim” 表示编辑器;而小写的 “vim” 则是指系统中可执行的编辑器程序,若从“VimL”角度
|
||
|
看,也算是它的解释器程序;然后“vim script”就是存放“VimL”代码且可用“vim”解释运
|
||
|
行它的文本文件。
|
||
|
|
||
|
## 目标假设
|
||
|
|
||
|
本教程针对的目标群体,假定是有使用 Vim 的基础及一定的编程基础。尽管我尽量从基
|
||
|
本概念讲起,但一些最基础的东西怕无从再细致了。然后最重要的是要热爱 Vim ,并且
|
||
|
有折腾的精神来打造或调教自己的 Vim。
|
||
|
|
||
|
其实,不管是使用 Vim 还是 VimL,最好的资源都是 Vim 的内置帮助文档(`:help`)。
|
||
|
外部教程都不免有所侧重,较适于学习阶段的引领者。
|
||
|
|
||
|
本教程依据的 Vim 版本是 `8.1`,系统环境 Linux。但除了一些新特性,应该也适用
|
||
|
Vim7 以下版本。同时由于 Vim 本身是跨平台的,VimL 自然也与操作系统无关。虽然无
|
||
|
法一一验证,但在一些重要的差异处,尽量在文中指出。
|
||
|
|
||
|
## VimL 的优缺点
|
||
|
|
||
|
作为一种语言,首先指出 VimL 的缺点一是只能在 Vim 环境下运行,二是运行速度有点
|
||
|
慢。但是,对于热衷 Vim 的程序猿,每天的编码工作都在 Vim 环境下,VimL 的编程方
|
||
|
式与 Vim 的操作方式无间密合,应该算是个优势。
|
||
|
|
||
|
另外,程序的运行速度都是相对的。所有的动态脚本语言,相对静态的编译语言,都很慢
|
||
|
。但这不要紧,只要完成大部分工作能足够快,脚本的简单便捷性就能体现出来了。VimL
|
||
|
同样具有脚本语言这个共性。
|
||
|
|
||
|
用 Vim 编写 VimL 代码,另有个天然的优势,就是编辑器,解释器,与文档手册一体化
|
||
|
,同时仍然保持了 Vim 的小巧,不像静态语言的IDE那么笨重。
|
||
|
|
||
|
编程思想基本是独立于语言的,大多数语言都是相通的。现代的高级脚本语言更是几乎都
|
||
|
能提供差不多的功能。(而且,据说只要是“图灵完备”的语言,理论上都能做任何事)。
|
||
|
所以,经常使用 Vim 的程序猿,如果想多学一门脚本语言,那 VimL 是个不坏的选择。
|
||
|
|
||
|
## 文本约定
|
||
|
|
||
|
本教程拟用 `.md` 文件书写,章用一级标题,节用二级标题,每节至少一个文件。初稿
|
||
|
不一定严格按目录大纲的顺序书写,并且在此过程中或有增删调整。
|
||
|
|
||
|
带星号 `*` 的章节,表示略有艰深晦涩的内容,可以选择性略过。
|
||
|
|
||
|
关于示例代码块,`:` 开始的行表示 Vim 的命令行(也叫 ex 命令),`$` 开始的行表
|
||
|
示从 shell 运行的命令行。较短的示例代码,可以直接输入或粘贴入 vim 的命令行,较
|
||
|
长的示例代码,建议保存 `.vim` 文件,然后 `:source`。
|
||
|
|
||
|
本书正文共十章,可粗略分为三部分。第 1-3 章为基础篇,第 4-7 章为中级篇,第
|
||
|
8-10 为高级篇。在行文组织上尽量循序渐进,建议按顺序阅读。文中经常用提示用
|
||
|
`:help` 命令查阅相关帮助主题,此后忘记细节时可随时查询。
|