三种模式,一般模式,编辑模式,命令行模式
vi 打开直接进入一般模式,可以上下左右移动光标,可以删除字符整行,可以复制粘贴文件数据
编辑模式
编辑模式要按下 i,l,o,O,a,A,r,R,等任何一个字母之后进入编辑模式,esc退出编辑模式
命令行模式
一般模式中输入:、/、? 可以吧光标移动到最下面哪一行,这个模式可以查找数据的操作
一般模式输入:wq保存离开vi,强制存入离开则为 :wq!
按键说明
一.一般模式
h 或方向← 向左移动一个字符
→ 向右移动一个字符
↑ 向上移动一个字符
↓ 向下移动一个字符
ctrl + f 屏幕向下移动一页
ctrl + b 屏幕向上移动一页
ctrl + d 屏幕向下移动半页
ctrl + u 屏幕向上移动半页
- 移动到非空格符的下一行
- 移动到非空格符的上一行
n 空格 按下数字再按空格键,光标会向右移动到这一行的n个字符
0 移动到这一行最前面的字符处
$移动到这一行最后一个字符处
H 光标移动到这个屏幕最上方哪一行的第一个字符
M 光标移动到屏幕中央哪一行的第一个字符
L 光标移动到这个屏幕最下方那一行的第一个字符
G 移动到这个文件的最后一行
nG n位数字,移动到这个文件的第n行
gg 移动到这个文件的第一行
N[enter] 光标向下移动n行
/word 向下寻找一个名称为word的字符串,例如要在文件内查找vbird这个字符串,就输入vbird
?word 向上寻找一个字符串名称为word的字符串
n 英文按键,代表重复前一个查找的操作
N 和n相反,代表向上查找前一个查找的字符串
:n1.n2s/word1/word2/g 在第n1行和n2行之间寻找word1字符串,并替换为word2
:1,$s/word1/word2/g 在第一行到最后一行找到word1字符串,换成word2
:1,$s/word1/word2/gc 和上面的命令多了一个需要用户确认的提示
删除,复制,粘贴
x,X 一行字当中,x为向后删除一个字符,X为向前删除一个字符
nx,n为数字,连续向后删除n个字符,比如10x就是向后删除10个字符
dd 删除光标所在的那一整行
ndd n位数字,删除光标所在的向下n行
d1G 删除光标
dG 删除从光标所在到最后一行的所有数据
d 复制光标坐在的那个字符到该行行尾的所有数据
p,P p为将以复制的数据在光标的下一行粘贴,P为粘贴在光标的上一行,
J 将光标所在行和下一行的数据,结合成同一行
c 重复删除多个数据,例如向下删除10行
u 复原前一个操作
ctrl+r 重做上一个操作
. 小数点,重复前一个操作的意思
一般模式切换到编辑模式
i,I,a,A,o,O 进入插入模式,i当前光标所在处插入,I,目前行第一个非空格符处插入,a目前光标所在下一个字符插入,A光标所在行的最后一个字符插入
r,R 进入替换模式,r只会替换光标所在的那个字符一次,R会一直替换光标所在的文字,按下esc为止
一般模式切换到命令行模式的可用的按钮
:w 将编辑的数据写入硬盘文件中
:w! 如果文件属性为只读,强制写入该文件,不过到底能不能写入,还是和你对该文件的权限有关
:q 离开vi
:q! 如果曾经修改过文件,不想存储,用!为强制离开并且不保存文件
:wq 保存离开
ZZ 大写的z,如果文件没有改动,不保存离开,文件被改动,保存离开
:w [filename] 将编辑的数据保存为另外一个文件,类似为另存为
:r [filename] 在编辑的数据中,读入另外一个文件的数据,也就是filename这个文件的内容加入到光标行的后面
:n1,n2 w [filename] 将n1到n2行的内容保存在filename这个文件
:! command 暂时离开vi到命令行模式下执行command的显示结果,例如 :! ls /home 在vi中查看 /home 下面用ls的输出文件信息
:set nu 显示行号,设置之后,会在每一行的前缀显示该行的行号
:set nonu 和set nu相反,取消行号