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

游标的移动
本节所述皆是在 common-mode(c-mode,在 vim 又名 normal-mode) 下的移动,原始的 vi 只能在 c-mode 移
动,在 insert-mode 只做文字的输入, 而不做游标的移动。当然 vim 及 elvis 的方向键是不论在那一种
mode 皆可移动自如。

基本的游标移动

h 左,或 Backspace 或方向键
j 下,或 Enter 或 (要 Shift 键),或方向键
k 上,或 方向键或 -(不必 Shift 键)
l 右,或 Space 或方向键
Ctrl-f 即 PageDown 翻页。
Crtl-b 即 PageUp 翻页。


使用 hjkl 键的移动是为了使手不必离开打字区(键盘中央的部
位),
以加快打字的速度,假如各位不习惯,那就使用方向键吧!

Backspace 及 Space 的移动方式是到了行首或行尾时会折行,
但方向键或 hl 键的移动则在行首或行尾时您继续按也不会折

行。
转折换行的功能是 vim 的扩充功能,elvis 无此功能。

jk 及使用方向键的上下移动游标会尽量保持在同一栏位。
使用 Enter, ,- 的上下移动,游标会移至上(下)一行的
第一个非空白字元处。

似乎有点复杂,各位就暂时使用方向键来移动就简单明白了!
等您爱上了 vim 后再来讲究吧。


进阶的游标移动

0 是数目字 0 而不是英文字母 o。或是 Hmoe 键,移至行首,(含空白字元)。
^ 移至第一个非空白字元,注意,要 Shift 键。
$ 移至行尾,或 End 键。要 Shift 键。


以上两个按键是源自规则表示式(regular expression),
在 regexp 中 ^ 是匹配行首,$ 是匹配行尾。


G 移至档尾(最后一行的第一个非空白字元处)
gg □至档首(第一行之第一个非空白字元处)


gg 是 vim 的扩充功能,在 elvis 或原始 vi 中可用 1G 来
移至档首(是数字 1 不是英文字 l)。

G 之原意是 goto,指移至指定数目之行首,如不指定数目,
则预设是最后一行。


w 移至次一个字(word)字首。当然是指英文单字。
W 同上,但会忽略一些标点符号。
e 移至前一个字字尾。
E 同上,但会忽略一些标点符号。
b 移至前一个字字首。
B 同上,但会忽略一些标点符号。
H 移至萤幕顶第一个非空白字元。
M 移至萤幕中间第一个非空白字元。
L 移至萤幕底第一个非空白字元。


这和 PageDown,PageUp 不相同,内文内容并未动,
只是游标在动而已。


n| 移至第 n 个字元(栏)处。注意,要用 Shift 键。n 是从头起算的。
:n 移至第 n 行行首。或 nG。

特别的移动

) 移至下一个句子(sentence)首。
( 移至上一个句子(sentence)首。
} 移至下一个段落(paragraph)首。
{ 移至上一个段落(paragraph)首。


sentence 是以 . ! ? 为区格。paragraph 是以空白行为区格。


% 这是匹配 {},[],() 用的,例如您的游标现在在 { 上只要按 %,就会跑到相匹配的 } 上。写程
式时满好用的。

另更有一些 vim 的特别按键,但这得留待最后才来讲述,否则各位恐怕会头昏眼花了。
基本编辑指令
这个单元就开始进入主题了。下编辑指令都是在 commond-mode (c-mode),就是您一进入 vim 时的模式,
只能下指令,不能键入文字。假如印象模糊,请瞄一下第一个单元的内容。这个单元说的是基本的指

令, 有些比较特别的编辑指令,因为太有个性了,所以会单独成一个单元来说明。

进入 i-mode 的指令

i 在游标所在字元前开始输入文字(insert)。
a 在游标所在字元后开始输入文字(append)。
o 在游标所在行下开一新行来输入文字(open)。
I 在行首开始输入文字。


此之行首指第一个非空白字元处,要从真正的第一个字元处开始
输人文字,
可使用 0i 或 gI(vim)。


A 在行尾开始输入文字。


这个好用,您不必管游标在此行的什么地方,
只要按 A 就会在行尾等着您输入文字。


O 在游标所在行上开一新行来输入文字。
J 将下一行整行接至本行(Joint)。


并无相对的 split 功能,可在 i-mode 下按 Enter 来达成


,当然假如您熟 macro 的话,可自行定义。


使用 J 时,预设会消去本行的 EOL,且上下行接缝间会留下一个
空白字元,
这符合英文习惯,却对中文会造成困扰,欲不留空白字元,
可使用 gJ(大写 J)指令,但这是 vim 的扩充功能,elvis 不适
用。

请您随便找一个档案来试看看,光看文字说明太抽象了。


删除指令

x 删除游标所在处之字元。在 vim 及 elvis 亦可用 Del 键。
X 删除游标前之字元。不可使用 Spaceback 键。


vim 能够正确使用以上两个指令于中文,会删去一个中文字 elvis
则不行,
一个中文字要删两次,即使用 xx。


dd 删除一整行(delete line)。
dw 删除一个字(delete word)。不能适用于中文。
dG 删至档尾。
d1G 删至档首。或 dgg(只能用于 vim)。
D 删至行尾,或 d$(含游标所在处字元)。
d0 删至行首,或 d^(不含游标所在处字元)。


请回忆一下 $ 及 ^ 所代表的意义,您就能够理解 d$ 及 d^ 的动
作,
这就是 vi(m) 可爱之处。


取代及还原


r 取代游标所在处之字元。vi(m) 很有个性的,您在 c-mode 按了 r 她就会停在那里等主人键入所要
替代的字元,希望您这个当主人的,不要傻呼呼的也楞在那里,赶快键入您的新字元吧!:-)


vim 中可用于中文字,也就是能够替换一个中文字,elvis 则不
行。
当然您的 vim 是要设在 taiwan 的才行。怎么样!有没有看过如此

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