vimbook-OPL(18-20)

CH18 更多基本编辑命令

18.1 word 和 WORD

在 Vim 有两个’单词’,其中 word 表示由字符、数字和下划线等组成,类似于 C 中的标识符。 word 由 ‘iskeyword’ 来指定哪些字符构成一个单词。而 WORD 的中文翻译是字串,就是用空白符分割的任何非空白符序列。Vim 中的移动操作是针对单词的,另外一些则是针对字串的。

word 的定制之所以需要用 ‘iskeyword’ 选项来界定的原因在于,Lisp 语言允许标识符中有’-‘,PHP 中的标识符中允许 ‘$’ 符,特定的文件类型可以指定不同的单词定义,方便做跳转。

值得说明的是 iskeyword 默认的值是 iskeyword=@,48-57,_,192-255 ,此中 @ 表示所有 C 语言中 isalpha() 返回 true 的字符,如果需要 @ 字符本身得用 @-@ 表示。数字可以用 0-9 或者 48-57,超过两位的数字就是 ASCII 码表示。如果要排除某些字符,用 ^ 作为前导字符,如: ^x 排除 x 字符,^a-c 排除 a 到 c 的字符。

‘isfname’ 中的字符集控制 gf 命令判断光标下的字符串是否为文件路径; ‘isident’ 定制的字符集控制 [d 命令查找宏定义; ‘isprint’ 中的字符集控制 \p 元字符所表示的可打印字符。

18.2 跳转命令

绝大数为程序员设计的编辑都会有回跳和前进的功能,当在函数定义之前做跳转或者搜索时可以回到以前的位置。Vim 定义了跳跃栈的概念,调用 :jumps 可以查看当前的跳跃栈。> 字符指示的行表示当前的位置,CTRL-O 将会跳一次跳跃栈,CTRL-I 或者 <TAB> 将前进一次跳跃栈。

阅读全文 “vimbook-OPL(18-20)”

vim正则表达式

本文只打算将非常常用而易忘记的内容记录下来,而不打算将 Vim 正则表达式中晦涩的部分展示出来,而且通常我们不会用到。Vim 的正则表达式主要用于文本替换(s 命令)。

Vim 正则表达式转义字符

这种转义字符又称为 metacharacters ,以下是典型的 Vim 转义字符。

# Matching # Matching
. 除了换行符的任意字符
\s 空白符 \S 非空白字符
\d 数字 \D 非数字
\x 十六进制字符 \X 非十六进制字符
\o 八进制字符 \O 非八进制字符
\h 字母和下划线(单词头字符) \H 非字母和下划线
\p 可打印字符 \P 除去数字的可打印字符
\w 单词字符 \W 非单词字符
\a 字母字符(alphabetic) \A 非字符字符
\l 小写字符 \L 非小写字符
\u 大写字符 \U 非大写字符

Quantifiers, Greedy and Non-Greedy

Quantifiers 描述
* 匹配0个或多个字符
\+ 匹配1个或多个字符
\= 匹配0个或1个字符
\{n,m} 匹配n~m个字符
\{n} 匹配n个字符
\{,m} 匹配至多m个字符
\{n,} 匹配至少n个字符

以上限定词是贪婪的,以下表格的是非贪婪的。

Quantifiers 描述
\{-} 匹配0个或多个字符
\{-n,m} 非贪婪匹配n~m个字符
\{-n,} 匹配至少n个字符
\{-,m} 匹配至多m个字符

还有一些必须转义的字符 \* \. \/ \\ \[ 表示它们本身。\| 表示正则表达式的 or 操作。$ 行尾 ^ 行首 \< 词首 \> 词尾也是非常重要的。

阅读全文 “vim正则表达式”

vimbook-OPL(14-16)

CH14 文件恢复和命令参数

这一章主要讲将 Vim 如何避免数据丢失方面的功能,包括:文件恢复的命令行参数、加密、批处理脚本以及备份文件选项和交换文件管理等。

14.1 命令行参数

vim --help 显示帮助文档,vim --version 显示版本以及特性选项。vim -R file.txtview file.txt 以只读打开文件。vim -X secret.txt 以加密形式创建文件,Vim 会提示输入密码,只有用 Vim 并且输入对应的密码时才能打开文件,否则将显示乱码。’key’ 选项将密码已明文存储,调用 :X 命令可以星号显示保存的密码。这里有一点值得注意的是 Vim 的加密是很弱的,而且交换文件(swap file)是没有加密的。调用 vim -X -n file.txt 将取消使用交换文件,反面作用是文件恢复功能将失效。

14.2 以脚本形式执行 Vim

这个很简单,将 Vim 脚本写在文件中并重定向到 Vim 中即可。脚本中的命令必须是 EX 命令。如下所示:

:%s/--person--/Jones/g
:write
:quit

将以上内容放置在文件 change.vim 中,然后调用 $vim -es file.txt < change.vim ,此命令的含义在于用 EX 模式在文件 file.txt 上执行 change.vim 中的命令。

阅读全文 “vimbook-OPL(14-16)”