分类: LINUX
2008-05-05 20:05:49
一般模式:移动光标的方法 | |
h或向左方向键 |
光标向左移动一个字符 |
j或向下方向键 |
光标向下移动一个字符 |
k或向上方向键 |
光标向上移动一个字符 |
l或向右方向键 |
光标向右移动一个字符 |
如果想要进行多次移动的话,例如向下移动20行,可以使用“20j”的组合键,即加上想要进行的次数后,操作即可 | |
[ctrl]+[f] |
屏幕向下移动一页 |
[ctrl]+[b] |
屏幕向上移动一页 |
[ctrl]+[d] |
屏幕向下移动半页 |
[ctrl]+[u] |
屏幕向上移动半页 |
+ |
光标移到非空格符的下一行 |
- |
光标移到非空格符的上一行 |
n |
n表示数字,例如20,按下数字后再按键,光标会向右移动这一行的n个字符。例如20 |
0 |
这是数字0,移动到这一行的最前面字符处 |
$ |
移动到这一行最后面字符处 |
H |
光标移动到这个屏幕的最上方那一行 |
M |
光标移动到这个屏幕中央那一行 |
L |
光标移动到这个屏幕最下面那一行 |
G |
移动到这个文件的最后一行 |
nG |
n为数字,移动到这个文件的第n行 |
gg |
移动到这个文件的第一行,相当于1G |
n |
n为数字,光标向下移动n行 |
一般模式:搜索和替换 | |
/word |
从光标位置开始,向下寻找一个名为word的字符串 |
?word |
从光标位置开始,向上寻找一个名为word的字符串 |
n |
n是英文按键,表示“重复前一个搜索的动作” |
N |
这个N是英文按键,与n刚好相反,为“反向”进行前一个搜索操作 |
:n1,n2 s/word1/word2/g |
n1与n2为数字,在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2 |
:1, $ s/word1/word2/g |
从第一行到最后一行寻找word1字符串,并将该字符串替换成word2 |
:1, $ s/word1/word2/gc |
从第一行到最后一行寻找word1字符串,并将该字符串替换为word2,且在替换前显示提示符提示给用户确认是否需要替换 |
一般模式:删除、复制与粘贴 | |
x,X |
在一行字中,x为向后删除一个字符,X为向前删除一个字符 |
nx |
n为数字,连续向后删除n个字符,如要连续删除10个字符,则输入“10x” |
dd |
删除光标所在的那一整行 |
ndd |
n为数字,从光标位置开始,删除向下n列 |
d1G |
删除光标所在位置到第一行的所有数据 |
dG |
删除光标所在位置到最后一行的所有数据 |
d$ |
删除光标所在位置到该行的最后一个字符 |
d0 |
删除光标所在位置到该行的最前面一个字符 |
yy |
复制光标所在的那一行 |
nyy |
复制光标所在的向下n行 |
y1G |
复制光标所在行到第一行的所有数据 |
yG |
复制光标所在行到最后一行的所有数据 |
y0 |
复制光标所在的那个字符到该行行首的所有数据 |
y$ |
复制光标所在的那个字符到该行行尾的所有数据 |
p,P |
p为将已复制的数据粘贴到光标的下一行,P则为贴在光标的上一行 |
J |
将光标所在行与下一行的数据结合成同一行 |
c |
重复删除多个数据,例如向下删除10行 |
u |
复原前一个操作 |
[ctrl]+r |
重做上一个动作 |
. |
小数点,意思是重复前一个动作,如果想重复删除、重复粘贴,按下小数点就可以了 |
进入编辑模式 | |
i,I |
插入,在当前光标处插入输入文字,已存在的文字会向后退,其中,i为“从当前光标所在处插入”,I为在当前所在行的第一个非空格符处开始插入 |
a,A |
a为从当前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入 |
o,O |
o为在当前光标所在的下一行处插入新的一行,O为在当前光标所在的上一行插入新的一行 |
r,R |
替换,r会替换光标所在的那一个字符,R会一直替换光标的居的文字,直到按下Esc为止 |
命令行命令模式 | |
:w |
将编辑的数据写入硬盘文件中 |
:w! |
若文件属性为只读时,强制写入该文件 |
:q |
离开vi |
:q! |
若曾修改过文件,又不想存储,使用!为强制离开不存储文件 |
:wq |
将文件存储后离开 |
:e! |
将文件还原到最原始的状态 |
ZZ |
若文件没有更改,则不存储离开,若文件已经更改,则存储后离开 |
:w [filename] |
将编辑的数据存储成另一个文件(类似于另存新文件) |
:r [filename] |
在编辑的数据中,读入另一个文件的数据,即将“filename”这个文件内容加到光标所在行的后面 |
:n1, n2 w [filename] |
将n1到 n2的内容存储到filename文件 |
:!command |
暂时离开vi到命令行模式下执行command的显示结果 |
:set nu |
显示行号,设置之后,会在每一行的前缀显示该行的行号 |
:set nonu |
与set nu相反, 为取消行号 |