就象在线编辑时应该尽量使用Edit工具一样,在Shell下进行程序的编写和修改,推荐使用的工具是
Vi 。它是UNIX系统自带的文本编辑器,具有强大的指令编辑功能,能方便快捷的完成文本的编
辑和修改工作。
由于vi编辑器因版本等原因会有所不同,所以以下介绍中如有出入,请参阅相关帮助并实践检验。
Vi编辑器的指令基本在命令模式中输入。
命令模式下有如下指令供使用:(任何时候按Escape键可回到命令模式)
h | 将光标左移一格 |
l | 将光标右移一格 |
j | 将光标下移一格 |
k | 将光标上移一格 |
w | 将光标移到下一个小字的前面 |
W | 将光标移到下一个大字的前面 |
b | 将光标移到前一个小字的前面 |
B | 将光标移到前一个大字的前面 |
e | 将光标移到下一个小字的后面 |
E | 将光标移到下一个大字的后面 |
fc | 将光标移到同一行的下一个字符c处 |
Fc | 将光标移到同一行的前一个字符c处 |
tc | 将光标移到同一行的下一个字符c的前一格 |
Tc | 将光标移到同一行的前一个字符c的后一格 |
number| | 将光标移到第number列上 |
+或者Enter | 将光标移到下一行第一个非空白字符处。 |
- | 将光标移到上一行第一个非空白字符处。 |
0 | 将光标移到当前行的第一个字符处 |
$ | 将光标移到当前行的最后一个字符处 |
H | 将光标移到屏幕最顶端一行 |
L | 将光标移到屏幕最底端一行 |
M | 将光标移到屏幕的中间 |
z- | 把当前行作为屏幕的最后一行,刷新屏幕 |
z. | 把当前行作为屏幕的中间一行,刷新屏幕 |
Ctrl+l | 重新显示屏幕当前内容 |
Ctrl+f | 向后滚一页 |
Ctrl+d | 向后滚半页 |
Ctrl+b | 向前滚一页 |
Ctrl+u | 向前滚半页 |
Ctrl+e | 屏幕向下滚一行 |
Ctrl+y | 屏幕向上滚一行 |
/pattern | 向后寻找指定字符串pattern |
?pattern | 向前寻找指定字符串pattern |
n | 在上次指定的方向上,再次查找 |
N | 在上次指定的方向的反方向上,再次查找 |
% | 移到匹配的“()”或者“{}”上 |
a | 光标移到所在处之后,进入文本输入状态 |
A | 光标移到行尾,进入文本输入状态 |
i | 在光标所在处,进入文本输入状态 |
I | 光标移到行首第一个非空白的字符处,进入文本输入状态 |
o | 在光标所在行后插入一空行,进入文本输入状态 |
O | 在光标所在行前插入一空行,进入文本输入状态 |
cc或者S | 将当前一行清空,进入文本输入状态,覆盖方式 |
C | 改变本行光标以后的文字,进入文本输入状态,覆盖方式 |
cw | 改变光标所在位置的单词,进入文本输入状态,覆盖方式 |
dd | 删除当前行,后续行自动上移 |
D | 删除光标所在行光标以后的文字 |
Dw | 删除光标所在单词 |
J | 把下一行内容加到本行行尾 |
rc | 把光标处字符替换成c |
R | 覆盖本行内容,本行编辑模式变为改写模式 |
u | 恢复上一次的修改 |
x | 删除光标所在处字符 |
X | 删除光标左侧字符 |
~ | 改变光标所在处字符的大小写 |
. | 重复上一次操作 |
<< | 当前行左移一个Tab |
>> | 当前行右移一个Tab |
yy或者Y | 把当前行放入缓冲区 |
yw | 将光标所在单词放入缓冲区 |
p | 将缓冲区内容放入光标所在行的下面 |
P | 将缓冲区内容放入光标所在行的上面 |
:w | 回写修改后的文件 |
:w filename | 当filename不存在,写成filename,否则报错 |
:w! filename | filename存在也直接写成filename |
:n | 开始编辑vi激活的文件列表中的下一个文件 |
:n filename | 开始编辑指定的文件filename |
:e filename | 使用filename激活vi,在vi中装入另外一个文件filename |
:e! | 重新装入当前文件,丢弃一切未保存的改动 |
:r filename | 读取filename的内容,加在光标处 |
:r! command | 执行command文件,将其输出加在光标处 |
Ctrl+g | 取得正在编辑的文件的有关信息 |
:sh | 起动sh,从sh中返回可以用exit或者Ctrl-d |
:! command | 执行command指令 |
:!! | 重新执行上次的! command指令 |
:q | 退出vi,如果用户未将修改保存,不能退出 |
:q! | 退出vi,不管是否有未保存的修改 |
:wq或者:x | 退出vi并保存修改 |