Vi技巧系列之二:简单编辑
时间:2007-04-16 来源:haitao-andy
(1) 在命令模式下,移动光标
对于单一移动,即h、l、k、j 左右上下移动一个位置相信我们都不会陌生,但却很少去使用数字与上述按键组成的复合键(呵呵,至少是我),如5l就相当于键入了5次l一样。如此一来,我们就不必一直按l或h来到达目标位置,当然也没必要精确地算好到底是多少次移动,只需大概估计便可。
命令模式下,还有下面几个命令相当有用的:
w // w命令每次将光标向前移动一个单词,并把符号和标点也作为单词处理
W // W命令也是按单词向前移动光标,但它并不把符号和标点作为单词处理
与上面w/W命令相反的则是b/B命令
b // b命令按单词后移光标
B // B命令也按单词后移光标,但不计算标点
注:当然w/W b/B命令也可与数字键组成复合命令键,如2w、5b,从而一次移动多个单词
e // 到单词的尾部,把符号和标点也作为单词处理
E // 到单词的尾部,但不把符号和标点也作为单词处理
经常我们编辑程序时,要回到行首或末尾,Vi中对此提供两个实用的行内移动命令
0 // 移动到行首(一定注意是数字0而非字母o)
$ // 移动到行尾
(2) 编辑命令
在命令模式下,我们清楚c、d、y三个命令分别用于修改文本、删除文本和移动文本。事实上以上三个命令必须与移动命令结合在一起使用才生效。
cw // 修改一个单词
2cw // 修改2个单词,不计标点
3cb // 向后修改3个单词
cc // 修改1行
dw // 删除一个单词
2dw // 删除2个单词,不计标点
3db // 向后删除3个单词
dd // 删除1行
yw // 复制一个单词
2yw // 复制2个单词,不计标点
3yb // 向后复制3个单词
yy或Y // 复制1行
注:以上3个命令c、d、y均可与前面提到的0、$组成复合命令。
(3)文本创建和操作命令
在命令模式下,键入以下命令作用如下(注意命令大小写作用的不同):
i // 在当前位置插入文本
I // 在行首插入文本
a // 在当前位置追加文本
A // 在行尾追加文本
o // 在光标所在行的下面新建一行,等待输入新文本
O // 在光标所在行的上面新建一行,等待输入新文本
S // 删除行并替换文本
x // 删除当前位置字符,且仍处于命令模式下
r // 利用一个单个字符替换另一个单个字符,而且不必按下ESC键就已经在命令模式下
R // 使用新文本覆盖现有文本
J // 合并当前行与下一行,当与数字键结合时可以合并多行
~ // 直接使用该命令可以转换大小写,这比我们平常先进入插入模式再修改字母更快捷
. // 重复上次操作,上次操作可以是删除行或粘贴行等行为
u // 取消上次操作
U // 恢复行到初始状态
对于单一移动,即h、l、k、j 左右上下移动一个位置相信我们都不会陌生,但却很少去使用数字与上述按键组成的复合键(呵呵,至少是我),如5l就相当于键入了5次l一样。如此一来,我们就不必一直按l或h来到达目标位置,当然也没必要精确地算好到底是多少次移动,只需大概估计便可。
命令模式下,还有下面几个命令相当有用的:
w // w命令每次将光标向前移动一个单词,并把符号和标点也作为单词处理
W // W命令也是按单词向前移动光标,但它并不把符号和标点作为单词处理
与上面w/W命令相反的则是b/B命令
b // b命令按单词后移光标
B // B命令也按单词后移光标,但不计算标点
注:当然w/W b/B命令也可与数字键组成复合命令键,如2w、5b,从而一次移动多个单词
e // 到单词的尾部,把符号和标点也作为单词处理
E // 到单词的尾部,但不把符号和标点也作为单词处理
经常我们编辑程序时,要回到行首或末尾,Vi中对此提供两个实用的行内移动命令
0 // 移动到行首(一定注意是数字0而非字母o)
$ // 移动到行尾
(2) 编辑命令
在命令模式下,我们清楚c、d、y三个命令分别用于修改文本、删除文本和移动文本。事实上以上三个命令必须与移动命令结合在一起使用才生效。
cw // 修改一个单词
2cw // 修改2个单词,不计标点
3cb // 向后修改3个单词
cc // 修改1行
dw // 删除一个单词
2dw // 删除2个单词,不计标点
3db // 向后删除3个单词
dd // 删除1行
yw // 复制一个单词
2yw // 复制2个单词,不计标点
3yb // 向后复制3个单词
yy或Y // 复制1行
注:以上3个命令c、d、y均可与前面提到的0、$组成复合命令。
(3)文本创建和操作命令
在命令模式下,键入以下命令作用如下(注意命令大小写作用的不同):
i // 在当前位置插入文本
I // 在行首插入文本
a // 在当前位置追加文本
A // 在行尾追加文本
o // 在光标所在行的下面新建一行,等待输入新文本
O // 在光标所在行的上面新建一行,等待输入新文本
S // 删除行并替换文本
x // 删除当前位置字符,且仍处于命令模式下
r // 利用一个单个字符替换另一个单个字符,而且不必按下ESC键就已经在命令模式下
R // 使用新文本覆盖现有文本
J // 合并当前行与下一行,当与数字键结合时可以合并多行
~ // 直接使用该命令可以转换大小写,这比我们平常先进入插入模式再修改字母更快捷
. // 重复上次操作,上次操作可以是删除行或粘贴行等行为
u // 取消上次操作
U // 恢复行到初始状态
相关阅读 更多 +
排行榜 更多 +