第一部分:一般指令模式可用按键说明,光标移动,复制粘贴、搜索替代
移动光标的方法:
h或(左箭头) | 光标向左移动一个字符 |
j或(下箭头) | 光标向下移动一个字符 |
k或(上箭头) | 光标向上移动一个字符 |
l或(右箭头) | 光标向右移动一个字符 |
多次移动:
【ctrl】+【f】 | 向下一页,等于PageDown |
【ctrl】+【b】 | 向上一页,等于Page Up |
【ctrl】+【d】 | 向下移动半页 |
【ctrl】+【u】 | 向上移动半页 |
+ | 光标移动到非空格符的下一列 |
- | 光标移动到非空格符的上一列 |
n<space> | 向后面移动20个字符的距离 |
0或功能键【Home】 | 行开头 |
$或功能键【End】 | 行末尾 |
H | 屏幕最上方那一行的第一个字符 |
M | 屏幕最中间那一行的第一个字符 |
L | 屏幕最下方那一行的第一个字符 |
G | 移动到文件的最后一行 |
nG | 移动到文件的第n行 |
gg | 移动到文件的第一行,等于1G |
n<Enter> | 光标向下移动n行 |
搜索与取代
/word | 向光标之下寻找为word的字符串 |
?word | 向光标之上寻找为word的字符串 |
n | 重复前一个搜寻动作 |
N | 反向进行前一个搜寻动作 |
:n1,n2s/word1/word2/g | 在n1和n2行之间寻找word1字符串,将其取代为word2 |
:1,$s/word1/word2/g | 在第一行到最后一行寻找word1字符串,并将其取代为word2 |
:1,$s/woed1/word2/gc | 在第一行到最后一行寻找word1字符串,并将其取代为word2,在取代之前提示字符询问是否取代 |
删除复制与粘贴:
x,X |
x:向后删除一个字符,等于【del】 X:向前删除一个字符,等于【backspace】 |
nx | 连续向后删除n个字符 |
dd | 删除游标所在的那一行 |
ndd | 删除光标所在的向下n行 |
d1G | 删除光标所在到第一列的所有数据 |
dG | 删除光标所在到最后一列的所有数据 |
d$ | 删除游标所在处,到该列的最后一个字符 |
d0 | 删除游标所在处,到该列的第一个字符 |
yy | 复制游标所在的哪一列 |
nyy | 复制游标所在的向下n列 |
y1G | 复制光标所在列到第一列的所有数据 |
yG | 复制光标所在列到最后一列的所有数据 |
y0 | 复制光标所在字符到行首的所有数据 |
y$ | 复制光标所在的字符到行尾的所有数据 |
p,P | 将已复制的数据在光标的下一列贴上,P则为游标的上一列 |
J | 将光标所在列与下一列的数据合成一列 |
c | 重复删除多个数据 |
u | 复原前一个动作 |
【ctrl】+r | 重做上一个动作 |
. | 重复前一个动作 |
一般指令模式切换到编辑模式可用的按键说明:
i,I |
进入插入模式: i 【从目前光标所在处插入】 I 【从所在行的第一个非空格符处开始插入】 |
a,A |
进入插入模式: A 【从光标所在列的最后一个字符处开始插入】 |
o,O |
进入插入模式: o 【在光标所在列的下一列插入新的一列】 O 【在光标所在列的上一列插入新的一列】 |
r,R |
进入取代模式: r 【取代光标所在的那个字符一次】 R 【一直取代光标所在的文字,直到按下Esc键为止】 |
【Esc】 | 退出编辑模式,回到一般指令模式 |
一般指令模式切换到指令列模式的可用按键:
:w | 将编辑的数据写入硬盘 |
:w! | 当文件的属性为【只读】时,强制写入该文件。到底能不能写入,与你对文件的权限有关 |
:q | 离开vi |
:q! | 曾修改过文件,又不想存储,使用!强制离开不存储文件 |
:wq | 存储后离开 |
:wq! | 存储后强制离开 |
ZZ | 文件没有更改,则不存储离开,若文件已被更改,则存储后离开。 |
:w【filename】 | 将编辑的数据存储成另一个文件 |
:r[filename] | 在编辑的数据中,读入另外一个文件的数据 |
:n1,n2w[filename] | 将n1到n2的内容存储成filename这个文件 |
:!command |
暂时离开vi到指令列模式下执行command的显示结果!例如:【:!ls /home】 在vi中查看当前/home下的ls输出的文件信息 |
vim环境的变更
:set nu | 显示行号,设定之后,会在每一列的前缀显示改行的行号 |
:set nonu | 取消行号 |
特别注意在vi中,【数字】是很有意义的!数字通常代表重复做几次的意思!也有可能代表去第几个什么什么的意思。向下移动20列,那就是[20 j]即可。