evol128[Blog]

I am the bone of my code

Vim 攻略<5> Registers

一天两更,我还真是勤快~

 

在vim中,我们每次执行复制,剪切,删除,粘贴操作,其结果都是和寄存器息息相关的,所以,为了更好地使用这些操作,我们有必要了解一下vim的各个寄存器

在之前的文章中我讲过了,寄存器是以"开头,后面跟寄存器的名字,vim中一共有如下几种寄存器:
1. 默认寄存器 ""
2. 10个数字寄存器 "0 到 "9
3. The small delete register(不会翻) "-
4. 26个命名寄存器 "a 到 "z 或者 "A 到 "Z, 不区分大小写
5. 四个只读寄存器 ":, "., "% 和 "#
6. 表达式寄存器 "=
7. 选择和拖拽寄存器 "*, "+ and "~
8. 黑洞寄存器(直译的。。。black hole= =) "_
9. 搜索表达式寄存器 "/
要查看每个寄存器中都存了些什么,只要输入:reg就好了

下面我们来一一介绍下这些寄存器的作用:
1. 默认寄存器 ""
当进行任何删除操作(d,c,s,x),或者复制操作(y)的时候,不管有没有指定寄存器,结果都会被存储在默认寄存器中。任何没有指定寄存器的粘贴(p)操作,会复制默认寄存器中的值

2. 10个数字寄存器 "0 到 "9
这10个寄存器中的值也是自动存储的。
寄存器"0存最近一次复制操作的值,除非那次复制指定了寄存器。
寄存器"1存储了最近一次删除操作的结果,除非那次删除指定了寄存器,或者删除内容少于一行。
寄存器"2存储了倒数第二次删除操作的结果,除非那次删除指定了寄存器,或者删除内容少于一行。
寄存器"3到"9,同理,倒数第三次到第九次删除操作的结果,除非那次删除指定了寄存器,或者删除内容少于一行。

3. small delete register "-
如果某次删除操作删掉了少于一行结果,那那次删除结果会被存在"-中,除非特别指定了寄存器。

4. 命名寄存器"a到"z
不会自动填充,全部交给用户使用。注意:用小写字母表示替换寄存器中的内容,而大写字母表示append!!!

5. 只读寄存器 ":, "., "% 和 "#
这四个寄存器是只读的,用户不可以手动往里面写数据。
".    最近一次插入的文字
"%    当前文件名
"#    其他打开的文件名
":    最近一次执行的指令名

6. 表达式寄存器 "=
用来存表达式的,在表达式那一章我会再提(如果有那一章的话)

7. 选择和拖拽寄存器 "*, "+ and "~
"*, "+  这俩寄存器就是传说中的剪贴板。其实它们是有略微区别的,不过介于我这篇教程是面向初学者的,我果断决定无视= =
"~      拖到vim里面的东西,会存在这个寄存器里

8. 黑洞寄存器 "_
顾名思义,往里面填数据的时候,什么都不会发生,从里面读数据的时候,什么都没有......
这个蛋疼东西的作用呢,有些时候,我们删除某样东西的同时却不希望它的值被自动写到寄存器里,这时候就把它往黑洞里扔吧。。。

9. 搜索表达式寄存器 "/
最后一次使用的搜索表达式,在pattern一章我会细说(如果有的话。。。)

最后给大家一个小tip,如果在command mode下想要使用register,只要输入ctrl-r再跟上寄存器名就好啦

Vim 攻略<4> Windows

通过windows,我们可以在同一个vim中打开多个文件。

有人可能会问,为什么不打开几个vim呢?其实,在同一个vim中编辑多个文件有很多好处:
手指不用离开键盘
可以使用通用寄存器(如果跨进程的话就只能用clipboard了)
有command历史记录
可以共用macro

打开文件:
:edit foo.txt

上下切分窗口
:split


关闭当前窗口
:close

关闭除当前窗口外所有窗口
:only

切分窗口并打开另一个文件:
:split two.c

用空白文件切分窗口:
:new

切成n份:
:nsplit text.c

增加当前窗口的大小:
Ctrl-W +

减少当前窗口的大小:
Ctrl-W -

将窗口大小设为一个特定值:
{height}Ctrl-W _

水平划分:
上面所有的split,用vsplit替换就可以了;new用vertical new替换,窗口大小的命令格式完全一样,只是高度变成了宽度

在窗口间移动:
CTRL-W h    移到左边的窗口
CTRL-W j    移到下面的窗口
CTRL-W k    移到上面的窗口
CTRL-W l    移到右边的窗口

CTRL-W t    移到最上面的窗口
CTRL-W b    移到最下面的窗口

这些移动按键和normal mode下的光标移动时一样的,很好记

移动窗口位置:
和上面一样的,只是把小写字母换成了大写
 

Vim攻略 Catalog

<1> Overview

<2> Basic Operations

<3> Configuration

<4> Windows

<5> Registers

<6> mapping

<7> Pattern

<8> Macro

<9> Scripting

 

我呢,其实一点都不擅长写教程啦,这个系列算是欠某人的吧。现在,一切都over了,我也得向前move on了。

farewell

 

Update:

09/05/2012: 和预想的一样,我懒了= =好歹更新完了,虽然后面都是贴manual....

08/28/2012: Finish(误) <6><7>   OK, I'm a very very lazy guy...

08/23/2012: Finish <4> <5>

08/07/2012 : Finish <1>, update <2> and <3>

08/06/2012 : Finish <3>

08/05/2012 : Finish <2>