vi/vim的三种模式
命令模式(Command mode),⽤户刚刚启动vi/vim,便进⼊了命令模式。
输⼊模式(Insert mode),在命令模式下按下i就进⼊了输⼊模式
底线命令模式(Last line mode),在命令模式下按下:(英⽂冒号)就进⼊了底线命令模式
移动光标的⽅法
h 或 向左箭头键(←) 光标向左移动⼀个字符
j 或 向下箭头键(↓) 光标向下移动⼀个字符
k 或 向上箭头键(↑) 光标向上移动⼀个字符
l 或 向右箭头键(→) 光标向右移动⼀个字符
+ 光标移动到⾮空格符的下⼀⾏
- 光标移动到⾮空格符的上⼀⾏
n<space> 那个 n 表示『数字』,按下数字后再按空格键,光标会向右移动这⼀⾏的 n 个字符
0 或功能键[Home] 这是数字『 0 』:移动到这⼀⾏的最前⾯字符处
$ 或功能键[End] 移动到这⼀⾏的最后⾯字符处
H 光标移动到这个屏幕的最上⽅那⼀⾏的第⼀个字符
M 光标移动到这个屏幕的中央那⼀⾏的第⼀个字符
L 光标移动到这个屏幕的最下⽅那⼀⾏的第⼀个字符
G 移动到这个档案的最后⼀⾏
nG n为数字。移动到这个档案的第 n ⾏
n<Enter> n 为数字。光标向下移动 n ⾏
翻⻚
[Ctrl] + [f] 屏幕『向下』移动⼀⻚
[Ctrl] + [b] 屏幕『向上』移动⼀⻚
[Ctrl] + [d] 屏幕『向下』移动半⻚
[Ctrl] + [u] 屏幕『向上』移动半⻚
删除、复制与粘贴
x, X 在⼀⾏字当中,x 为向后删除⼀个字符 (相当于 [del] 按键), X 为向前删除⼀个字符
nx n 为数字,连续向后删除 n 个字符
dd 删除游标所在的那⼀整⾏(常⽤)
ndd n 为数字。删除光标所在的向下 n ⾏
d1G 删除光标所在到第⼀⾏的所有数据
dG 删除光标所在到最后⼀⾏的所有数据
d$ 删除游标所在处,到该⾏的最后⼀个字符
d0 那个是数字的0 ,删除游标所在处,到该⾏的最前⾯⼀个字符
yy 复制游标所在的那⼀⾏(常⽤)
nyy n 为数字。复制光标所在的向下 n ⾏
y1G 复制游标所在⾏到第⼀⾏的所有数据
yG 复制游标所在⾏到最后⼀⾏的所有数据
y0 复制光标所在的那个字符到该⾏⾏⾸的所有数据
y$ 复制光标所在的那个字符到该⾏⾏尾的所有数据
p, P p为将已复制的数据在光标下⼀⾏贴上,P则为贴在游标上⼀⾏
J 将光标所在⾏与下⼀⾏的数据结合成同⼀⾏
c 重复删除多个数据,例如向下删除 10 ⾏,10cj
u 复原前⼀个动作
[Ctrl]+r 重做上⼀个动作
切换到编辑模式
i, I 进⼊输⼊模式(Insert mode):
i 为『从⽬前光标所在处输⼊』
I 为『在⽬前所在⾏的第⼀个⾮空格符处开始输⼊』
a, A 进⼊输⼊模式(Insert mode):
a 为『从⽬前光标所在的下⼀个字符处开始输⼊』
A 为『从光标所在⾏的最后⼀个字符处开始输⼊』
o, O 进⼊输⼊模式(Insert mode):
o 为『在⽬前光标所在的下⼀⾏处输⼊新的⼀⾏』
O 为『在⽬前光标所在处的上⼀⾏输⼊新的⼀⾏』
r, R 进⼊取代模式(Replace mode):
r 只会取代光标所在的那⼀个字符⼀次
R 会⼀直取代光标所在的⽂字,直到按下 ESC 为⽌
[Esc] 退出编辑模式
命令模式
:w 将编辑的数据写⼊硬盘档案中
:w! 若⽂件属性为『只读』时,强制写⼊该档案
:q 离开 vi
:q! 若曾修改过档案,⼜不想储存,使⽤ ! 为强制离开不储存档案
:wq 储存后离开,若为 :wq! 则为强制储存后离开
ZZ 这是⼤写的 Z ,若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开
:w [filename] 将编辑的数据储存成另⼀个档案
:r [filename] 在编辑的数据中,读⼊另⼀个档案的数据
:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案
:! command 暂时离开 vi 到指令⾏模式下执⾏ command 的显示结果
vim环境的变更
:set nu 显示⾏号,设定之后,会在每⼀⾏的前缀显示该⾏的⾏号
:set nonu 与 set nu 相反,为取消⾏号