如何进入vi/vim模式: vi/vim 新建的文件名
vi/vim的三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
命令模式:用户刚启动vi时的模式
- i 切换到输入模式
- x 删除当前光标所在的字符
- : 切换到底线命令模式,以在最低一行输入命令
输入模式:命令模式按下i进入
1.输入字符:字符按键以及Shift组合
2.HOME/END 移动光标到行首/行尾
3.Page Up/PageDown,上/下翻页
4.Insert.切换光标为输入/替换模式,光标将变成竖线/下划线
5.esc 退出输入模式,切换到命令模式
底线模式:命令模式模式下按下:就进入底线命令模式
(底线命令模式可以输入单个或多个字符的命令)
- q 退出程序
-
w 保存文件
Vim/vi 工作模式
vim/vi 按键说明:
光标移动:
h 或 想做向左箭头(←)/j 或向下箭头(↓)/k 或 向上箭头(↑)/l 或 向右箭头(→) ---- 光标向左/下/上/右移动
<向下移动30行 -- 30j 或 30 ↓ 的组合键> 其余类似
Ctrl + f / Ctrl + b 屏幕向下/上 移动一页
Ctrl + d / Ctrl + u 屏幕向下/上 移动半页
+ / - 光标移动到非空格的下/上 一行
n(数字) + <space> 光标向右移动这一行的n个字符的距离
0/[Home] 移动到这一行的最前面字符处
$/[End] 移动到这一行的最后面字符处
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央的哪一行的第一个字符
L 光标移动到的这个屏幕的最下方的那一行的第一个字符
G 移动到这个文档的最后一行
n(数字)G 移动到这个文档的第n行
gg 移动到这个档案的第一行,相当于 1G
n(数字)<Enter> 光标向下移动n行
搜索替换:
/word 向光标之下寻找一个名称为 word 的字符串
?word 向光标之上寻找一个字符串名称为word的字符串
n(英文按键下) 重复前一个搜索动作
N(英文按键下) 与n相反,(反向重复)
:n1(数字),n2(数字)s/word1/word2/g n1与n2行之间寻找word1将其替换为word2
:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找到word1字符串,并将其替换为word2
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从最后一行寻找word1字符串并将其取代为word2(在取代前通过字符提醒用户确认(confirm)是佛需要取代)
删除\复制\粘贴:
x,X x为在一行字当中向后删除一个字符,X为向前删除一个字符
n(数字)x 连续向前删除你个字符
dd 删除游标所在的一整行
n(数字)dd 删除光便所在的向下n行
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除游标所在处,到该行的最后一个字符的数据
d0 删除游标所在处,到该行的最前面的一个字符
yy 复制游标所在的那一行
n(数字)yy 复制游标所在向下n行的数据
y1G 复制游标所在行到第一行所有的数据
yG 复制游标所在行到最后一行的数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
p,P p为将已复制的数据在光标下一行贴上,P则为在光标上一行!
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据(向下删除10行>>>10cj)
u 复原前一个动作
Ctrl+r 重复做上一个动作
一般模式切换到编辑模式的可用按钮
i,I 进入输入模式(Insert mode):i 为[从目前光标所在处输入],I为[在目前光标所在行的第一个非空格符处开始输入]
a,A 进入输入模式: a --> 从目前光标所在位置的下一个字符开始输入,A --> 从光标所在行的最后一个字符开始输入
o,O 进入输入模式:o-->在目前光标所在的下一行处输入,O-->在目标光标所在处的上一行输入新的一行
r,R 进入取代模式 [ --REPLACE-- ]r-->只会取代光标所在的哪一个字符一次,R会一直取代光标所在的文字,直到按下ESC为止
一般模式切换到指令模式
指令行的存储\离开:
:w 将编辑的数据写入硬盘档案中
:w! 若文件属性为[只读]时,强制写入该档案,是否能写入跟权限有关
:wq 储存后离开,若为:wq!则为强制存储后离开
ZZ 若档案没有更改,则不存储离开,若档案更改过,则存储后离开
:w[filename] 将编辑的数据存储成另一个档案
:r[filename] 在编辑的数据中,读入另一个档案的数据.即将[filename]这个档案中的内容加到游标所在行后面
:n1,n2 w[filename] 将n1到n2的内容储存成 filename 这个档案
:! command 暂时离开vi到指令模式下执行command的显示结果
vim的环境变更
:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu 与set nu 相反,为取消行号