手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

大家来用VIM--linux的缺省编辑器(二)

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

有个性的取代方式?ㄚ!r 就是 replace 啦!


R 取代字元至按 Esc 为止。
cc 取代整行内容。或大写 S 亦可。
cw 替换一个英文字(word),中文不适用。(change)
~ 游标所在处之大小写互换。当然不能用于中文。别忘了 Shift!
C 取代至行尾,即游标所在处以后的字都会被替换。或 c$。
c0 取代至行首,或 c^。
s 替换一个字元为您所输入的字串。和 R 不同,R 是覆盖式的取代,s 则是插入式的取代,您可
亲自实验看看。ㄟ!是小写的 s。
u 这个太重要了,就是 undo,传统的 vi 仅支援一次 undo,vim 及 elvis 就不只了,vim 是没有限制

的。
U 在游标没离开本行之前,回复任何编辑动作。
Crtl r 这个也是很重要,就是 redo 键。

加上数目字
喔!骚到 vi(m) 的痒处了,这是 vi(m) 一个很骚包的功能,只此一家别无分号(当然同源的 ed,sed 等
不在此限)。 就是您能够在大部份的指令前加上数目字,代表要处理几次的意思。以下用实例来说明
比较清楚。

5dd 删除游标所在处(含)起算以下五行内容。妙吧!
3r 按了 3r 后,您键入一个英文字,则三个字元皆会被您所键入的英文取代。很抱歉,这不能用
于中文。
5J 将五行合并成一行。
3x 删除三个字元。抱歉,不能用于中文。
5i A 然后按 Ecs,插入五个 A。中文也能够!
2i system Esc 插入 systemsystem。中文也能够!
5G 游标移至第五行,是从档首开始起算。
5l 移至右第五个字元处,当然 j 是能够用方向键取代的。任何移动指令(参考第二单元)都能够
加上数目字来控制,中文也通喔!elvis 当然是不能用于中文。

其他的指令和数目字结合,就留待各位去发掘吧!最重要的是请您亲自操作看看, 使用 vi(m) 常常要动
动脑筋,会有更妙的操作方式。

简单重排功能


〉〉 整行向右移一个 shiftwidth(预设是 8 个字元,可重设)。
〈〈 整行向左移一个 shiftwidth(预设是 8 个字元,可重设)。


:set shiftwidth? 可得知现在的设定值。:set shiftwidth=4
可马上重设为 4 个字元。shiftwidth 可简写成 sw。ㄟ,别忘了
Shift 键!


:ce(nter) 本行文字置中。注意是冒号命令!
:ri(ght) 本行文字靠右。
:le(ft) 本行文字靠左。


所谓置中、靠左右,是参考 textwidth(tw) 的设定。
假如 tw 没有设定,预设是 80,就是以 80 个字元为总宽度为标准
来置放。
当然您也能够如 sw 相同马上重设。


gqip 整段重排。中文会出槌!:-(
gqq 本行重排。


重排的依据也是 textwidth。这里的重排是指您键入文字时没有按
Enter 键,
就一直在 keyin,这样会形成一个很长的一行(虽然萤幕上会替
您做假性折行),
重排后,则会在每一行最后加入 EOL。gq 重排功能是 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 后发现不是您要

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!