看板Linux
标 题大家来学VIM(4)
发信站DCI HiNet (Mon Mar 20 16:37:59 2000)
转信站Ptt!bbs.ee.ntu!freebsd.ntu!News.Math.NCTU!newsfeed.stanford.edu!news-s
大家来学 VIM(一个历久弥新的编辑器)[四]
复制(yank)
yank 是什麽意思?有疑问的请查一下字典吧!就好像是中医治疗
中的「拔罐」的意思啦(是不是叫「拔罐」?知道的朋友指正一下
吧)!反正在 vi(m) 中,她就是复制 copy 的意思。这在 vi(m)
的思考逻辑里,就是「拔」yank 起来,「放」put 上去。其实复
制的指令就是 y 一个而已,为什麽要独立成一个单元来说明呢?
因为 vi(m) 复制、贴上的功能实在太独特了,再配合第三单元介
绍的数目字,及 vi(m) 内部的缓冲区来使用的话,您会发现,原
来 vi(m) 肚子里还暗藏着秘密武器。
◎ 指令说明
yy 复制游标所在行整行。或大写一个 Y。
2yy 或 y2y 复制两行。ㄟ,请举一反三好不好!:-)
y^ 复制至行首,或 y0。不含游标所在处字元。
y$ 复制至行尾。含游标所在处字元。
yw 复制一个 word。
y2w 复制两个字。
yG 复制至档尾。
y1G 复制至档首。
p 小写 p 代表贴至游标後(下)。
P 大写 P 代表贴至游标前(上)。
※ 整行的复制,按 p 或 P 时是插入式的贴在下(上)一行。
非整行的复制则是贴在游标所在处之後(前)。
"ayy 将本行文字复制到 a 缓冲区
※ a 可为 26 个英文字母中的一个,如果是小写的话,原先的
内容会被清掉,如果是大写的话是 append 的作用,会把内
容附加到原先内容之後。
※ " 是 Enter 键隔壁的那一个同上符号(ditto marks)。
"ap 将 a 缓冲区的内容贴上。
※ 缓冲区的术语在 vim 称为 registers,vim 扩充了相当多的
功能,有兴趣深入的朋友请 :h registers。您用 d、c、s、
x、y 等指令改变或删除的内容都是放在 registers 中的。
例如:您用 dd 删除的一行,也是可以使用 p 来贴上的。只
要是在缓冲区的内容都可以使用 p 来贴上,不是一定要 y 起
来的内容才能用 p。因此您认为 p 是 paste 也可以,认为是
put 可能较正确。
5"ayy 复制五行内容至 a 缓冲区。
5"Ayy 再复制五行附在 a 内容之後,现在 a 中有十行内容了!
※ ㄟ!不要我一直用 a 您就认为只有 a 可以用喔。26 个英文
字母都可以的,交叉运用下,您会发觉 vi(m) 肚量不小。
※ 问题来了!忘记谁是谁的时候怎麽办? :reg(冒号命令)就
会列出所有 registers 的代号及内容。您现在就试着按看看
咦!怎麽还有数目字、特殊符号的缓冲区,原来您刚刚删除
的就预设放在 " 这个缓冲区,然後依序是 0,1,2,...9。也
就是说您按 p 不加什麽的话,是取出 " 缓冲区的内容的。
% 指的是目前编辑的档案,# 指的是前一次编辑的档案。还
有其它的呀!因为没什麽重要,就请 :h registers 吧!
registers 有个 "s" 结尾,不要搞错了,而且 Tab 的补全
键 vim 也支援的,也就是说您键入 :h regi 再按 Tab 键,
vim 就会帮您补全,按了 Tab 後发现不是您要的,那就继续
按,总会出现您要的。:-)
※ Tab 补全的功能,elvis 也有,但叫出 registers 列表的命令
则没有,您得自行记忆在您的脑袋瓜子里。而且 elvis 的补全
能力并没 vim 强。
◎ 天大的指令
. 这是什麽?ㄚ,是英文句点啦!没错,就是英文句点。什麽意
思?重复前次的编辑动作。这个指令太高明了,只要是编辑动
作(移动游标不算,冒号命令也不算)都可以按英文句点来重
复,要重复几次都可以。
例如:您按了 yy,然後按 p 就会复制一整行,如果要重复这个动
作的话,就可以按 . ,也可以把游标移到其它地方後再按。其它
dd,dw,r,cw 等编辑指令都可以这样来重复。如果您要重复做某
些编辑动作时,千万千万一定要想到有这麽一个英文句点重复指令
。ㄚ,拜托啦!您一定要记得常用这个指令。
◎ 疑难杂症
1. 那 mouse 中键的剪贴功能还有吗?
当然还有,不管在 console 或 X terminal 中都照用不误。
当然在 windows 下的话就不能用了,复制用 Ctrl-c,贴上
用 Shift-Insert 来代替。Ctrl-v 在 vim 中另有作用,在 windows
下就不必去麻烦它了。
2. ㄟ,我从 netscape 用 mouse copy 东东过来的时候,常常都
搞得天下大乱耶!
要设成 :set paste,预设是 map 至 F9 键的,您要 copy 之
前先按一下 F9,copy 完後再按一次 F9 来回复。这是 vim 的
扩充功能,elvis 没有。那在 elvis 怎麽办?只好 :set noai
了。在 GUI 的版本应不会有这种情形。
※ set 的功能先不必去理它,往後会有一个单元专门讨论。
朋友!您睡着了吗?不要被吓到了,您只要开个档案,亲自操作一
下就能心领神会。那用 mouse 不是更方便吗?不见得,yyp 来复
制贴上一整行比较快,还是用 mouse 来拉比较快?您可以试看看
。
下回预告:寻找、替换。
※ 有错误的地方,请指正,谢谢!
※ 未经作者同意,请勿移作商业用途。
※ 如果各位的 BBS 站,news server 因故本系列文章并不完整,
您可以来信向在下索取,很乐意寄一份给您。
--
=======
Edward Lee
[email protected]