第一部分:一般模式可用的按钮说明,光标移动、复制粘贴、查找替换等 | |
h或向左箭头 | 光标向左移动一个字符 |
j或向下箭头 | 光标向下移动一个字符 |
k或向上箭头 | 光标向上移动一个字符 |
l或向右箭头 | 光标向右移动一个字符 |
如果想进行多次移动,例如向下移动30行,可以使用30j或30↓的组合按键。其他移动方向的组合键类似。 | |
[Ctrl]+[f] | 屏幕向下移动一页,相当于page down按键 |
[Ctrl]+[b] | 屏幕向下移动一页,相当于page up按键 |
[Ctrl]+[d] | 屏幕向下移动半页 |
[Ctrl]+[u] | 屏幕向上移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n<space> | "n"表示具体数字,如10。按下数字后再按下空格键,光标会向右移动这一行的n格字符。 |
0或功能键<Home> | 移动到这一行的最前面字符处 |
$或功能键<End> | 移动到这一行的最后面字符处 |
H | 光标移动到这个屏幕最上方那一行的第一个字符 |
M | 光标移动到这个屏幕中央那一行的第一个字符 |
L | 光标移动到这个屏幕最下方那一行的第一个字符 |
G | 移动到这个文件的最后一行 |
nG | 移动到这个文件的第n行。 20G |
gg | 移动到这个文件的第一行 |
n[Enter] | 光标向下移动n行 |
查找与替换 | |
/word | 向下寻找一个名称为word的字符串。例如/mark |
?word | 向上寻找一个名称为word的字符串。例如/mark |
n | 重复前一个查找的操作。如输入/mark后,再按下n,表示继续向下查找“mark”这个字符串 |
N | 反向进行前一个查找操作 |
:n1,n2s/word1/word2/g | 在第n1和n2行之间寻找word1,并将word1替换为word2 |
:1,$s/word1/word2/g | 在第1行和最后一行之间寻找word1,并将word1替换为word2 |
:1,$s/word1/word2/gc | 在第1行和最后一行之间寻找word1,并将word1替换为word2。且在替换前提示用户确认(confirm)是否需要替换 |
删除、复制与粘贴 | |
x,X | 在一行字中,x为向后删除一个字符,X为向前删除一个字符 |
nx | 连续向后删除n个字符 |
dd | 删除光标所在的那一整行 |
ndd | 删除光标所在的向下n行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除从光标所在处到该的最后一个字符 |
d0 | 删除从光标所在处到该行的最前面一个字符 |
c | 重复删除多个数据,例如向下删除10行 【10cj】 |
yy | 复制光标所在的哪一行 |
nyy | 复制光标所在的向下n行 |
y1G | 复制光标所在行到第一行的数据 |
yG | 复制光标所在行到最后一行的数据 |
y0 | 复制光标所在的那个字符到改行行首的所有数据 |
y$ | 复制光标所在的那个字符到改行行尾的所有数据 |
p,P | p为将已复制的数据在光标下一行粘贴,P为粘贴在光标上一行。例如,目前光标在第20行,且已经复制了10行数据。则按下p后,那10行数据会粘贴在原本的20行之后,即由21行开始粘贴。但是如果按下P,那么原本的的第20行会被变成30行 |
J | 将光标所在行与下一行的数据合成同一行 |
u | 复原上一个操作 |
[Ctrl]+r | 重做上一个操作 |
. | 这是一个小数点。 重复前一个操作的意思。 |
一般模式-->编辑模式的可用按钮说明 | |
i,I | 进入插入模式(Insert mode)i为从目前光标所在处插入,I为目前所在行的第一个非空格处开始插入 |
a, A | 进入插入模式(Insert mode)a为从目前光标所在的下一字符处插入,A为目前所在行的最后一个字符处开始插入 |
o, O | 进入插入模式(Insert mode)o为从目前光标所在的下一行处插入新的一行,O为目前所在行的上一个行处插入新一行 |
r, R | Repalce mode r只会提华纳光标所在的那一个字符一次;R会一直替换光标所在的问题,直到按下【Esc】为止 |
【Esc】 | 退出编辑模式,回到一般模式中 |
一般模式-->命令行模式的可用按钮说明 | |
:w | 将编辑的数据写入硬盘中 |
:w! | 若文件属性是只读时,强制写入该文件。不过,到底能不能写入,还是与你对该文件的文件权限有关 |
:q | 离开vi |
:q! | 若修改过文件,但是不想保存,使用!为强制离开不保存文件 |
:wq | 保存后离开,若为"wq!"则为强制保存后离开 |
:w[filename] | 将编辑的数据保存为另一个文件(类似于另存为) |
:r[filename] | 在编辑的数据中,读入另一个文件的数据,即将“filename"这个文件的内容加到光标所在行后面 |
:n1,n2 w [filename] | 将n1到n2的内容保存成filename这个文件 |
:! Command | 暂时离开vi到命令行模式下执行command的显示结果。例如, :! ls /home |
命令行的保存、离开等命令 | |
:set nu | 显示行号,设置之后,会在每一行的前缀显示该行的行号 |
:set nonu | 取消行号 |