在 vi 中使用 Buffer 和 标记位置

来源:互联网 发布:php统计页面访问量 编辑:程序博客网 时间:2024/06/15 12:39

一直在学习使用 Vim 编辑器,经常翻阅 O'Reilly 出的 Learning thg vi and Vim Editors,今天特地翻译其中的两节节。


=======================================================================================

使用缓存区


在编辑过程中,上一次删除操作(d 或 x)或是复制操作(y )会被保存到一个 buffer 中(buffer 即缓存区,用以保存内存中的信息)。你可以读取这个缓存区的内容,然后将已经保存的文字粘贴到文档中(使用 p 或 P)。


事实上,vi 会把之前的 9  次删除的结果保存在用数字命名的缓存区中。你可以通过读取这些缓存区来恢复这 9 个删除操作中的任何一个或几个。不过小的删除操作,比如文本行的一部分,是不会被保存到用数字序号命名的缓存区中的。要想恢复这些删除操作就只能在删除之后马上使用 p 或者 P 命令。


vi 也允许将文本复制到缓存区中,这些缓存区是用字母命名的。你可以使用 26 个这样的缓存区(a - z)并使用复制命令随时恢复任何一个缓存区的内容。


恢复删除


vi 快速删除一大块文字的能力非常强大,但是如果误删了很多行该怎么办?不用担心,你可以恢复前九次删除,因为被删掉的内容已经被保存到用数字序号保存的缓存区里了。最近一次删除的文本在缓存区 1,上上次的删除内容保存在缓存区 2,以此类推。

恢复任何一个缓存区内容的命令是输入一个双引号 ”,然后加上缓存区的名称,然后加上粘贴命令。比如恢复缓存区 2 的命令是:
"2p

这样就可以把缓存区 2 的内容放置到光标后面了。

如果无法确定想要恢复的文本在哪一个缓存区中,不需要反复使用 "np 这样的命令,只需要在粘贴命令之后输入撤销命令(u),然后输入重复命令(.),vi 会自动对缓存区名称进行递增,即使用类似下面的命令:
"1pu.u.u.u

知道出现了所寻找的文本为止。

复制文本到缓存区


使用 y 或 d 命令可以把文本复制到一个用字母命名的缓存区中,其语法是在复制命令之前加上双引号(")和缓存区的名称:

"a7yy"dyy"a5dd

之后就可以调用缓存区中的文本了:

"ap"dP

调用缓存区时使用其名称的大写字母会把文本内容附加到原来的部分上去,否则该缓存区将被覆盖:

"Zy)

在多文件编辑和多窗口编辑中,缓存区是共用的,因此可以灵活地在不同文档间复制和移动文本。

标记位置


在 vi 中可以利用隐形的书签标记文档中的任何位置以便于之后查找。在命令模式下:

mx

其中的 x 可以是任何字母,vi 只允许小写字母,Vim 则大小写均可。这样就标记了相应的位置。


'x

(单引号)将光标移动到 x 标记的字符所在的行的行首。

`x

(重音符)将光标移动到 x 标记的字符所在的位置。


``

移动到前一个标记处。


''

移动到前一个标记处的行首。


========================================================================



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
0 0