目录
1.vi编辑器三种模式
vi分为三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
刚启动 vi 默认进入命令模式,按下i进入输入模式,在命令模式按下:(英文冒号)就进入底线命令模式。
注:vim可以当作vi的升级版本,可以用多种颜色的方式来显示一些特殊的信息。
2.命令模式介绍
(1)移动光标
0 行首
shift + $ 行尾
gg 文首
G(shift+g) 文尾
A(Shift+a) 文尾,并编辑
o 下一列并编辑
ctrl+f 向上翻页
ctrl+b 向下翻页
ctrl+u 向上翻半页
ctrl+d 向下翻半页
25gg 跳转到第25行
3 + Enter 光标向下移动3行
数字+Ctrl+d 向下移动几行
数字+Ctrl+u 向上移动行
:-4 向上移动4行
:4 移动第4行
1G 光标移动到文件第一行的行首。
K 光标移动到文件上一行的同一列。
h 光标移动到当前行的前一个字符。
l 光标移动到当前行的后一个字符
j 光标移动到下一行的同一列。
G 光标移动到文件最后一行的行首。
i 在光标前插入。
a 在光标后插入。
I 在当前行首插入。
A 在当前行尾插入。
o 在当前行之下一新行插入。
O 在当前行之上新开一行插入。
(2)查找和替换
/word:向下寻找一个名称为word的字符串。
?word:向上寻找一个名称为word的字符串。
n 就分别是向后找
N 向前找这个词
:1,10/jack/len/g:在第1行和10行之间jack替换成len
:1,$s/w1/w2/g: 全文将w1替换成w2
:1,$s/word1/word2/gc:全文将w1替换成w2,显示替换确认提示
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/vivian/sky/(等同于 :g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
(3)删除复制和粘贴
:g/xxx/d,删除包含xxx的行
:v/xxx/d,删除不含xxx的行
x: x为向后删除一个字符
X: X为向前删除一个字符。
d0:删除从光标前一个字符开始到行首的内容
dw :删除一个单词
删除同行光标后面所有字符:d$
dd: 删除光标所在的一整行
dG: 删除光标后面的全部行
ndd:删除光标所在的向下n行
yy: 复制整行
nyy:复制光标所在的向下n行
y^ 复制当前到行头的内容;
y$ 复制当前到行尾的内容;
yG 复制至档尾
p: 将内容在光标的下一行粘贴
P: 将内容在光标的上一行粘贴
u: 撤消上一步操作
[Ctrl]+r:重做上一个操作。
.:小数点,重复前一个操作。
(4)批量注释
批量注释
CTRL + v, 使用向下箭头选择要注释的行,shift +i,在第一行加#注释,按esc退出,之后所选的行也会注释掉
批量去注释
CTRL + v, 使用向下箭头选择要注释的行,小写d
3.输入模式
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
4.底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
:w 保存;
:w filename 另存为filename;
:wq! 保存并强制退出;
:wq! filename 以filename为文件名保存后强制退出;
:q! 强制退出;
:x 保存并退出(仅当文件有变化时保存)
:e! 重新编辑当前文件,忽略所有的修改
:set nu 显示行号 :set nonu 取消行号 :n1,n2 w filename 将n1到n2行的内容保存到名为filename的文件中
5.快速移动合集
(1) 最常用的几个命令如下:
Ctrl+f 向前(往行号大的方向移动)移动一屏,想来F代表Forward
Ctrl+b 向后移动一屏,B的话应该是Before吧
Ctrl+d 向前移动半屏,D指Down
Ctrl+u 向后移动半屏,U指Up
Ctrl+e 编辑窗口中的文件内容整体上移一行。
Ctrl+y 编辑窗口中的文件内容整体下移一行。
(2)使用z重新定位屏幕命令
z+回车 把当前行移动到屏幕顶部
100z+回车 将移动第100行到屏幕的顶部,记得键入100z之后要再回车
z. 把当前行移动到屏幕中央,不用回车,切记
z- 把当前行移动到屏幕底部,同上,不用回车
(3)按搜索移动
/pattern 向前搜索模式,pattern代指要搜索的内容
?pattern 向后搜索模式
n 重复上次搜索(往下)
N 反方向重复上次搜索
(4)按行号移动
nG 移动到第n行
Ctrl+g 显示当前行(并不是移动命令)
G 移动到文件的尾部
(5)按光标移动
左:h
下:j
上:k
右:l
下一行行首:+
上一行行首:-
当前行行首:0
把光标移至当前行的起始位置,也即当前行的第一个非空白字符:^
当前行行尾:$
后一个单词词首:w,W 光标停留在下一个字的字首位置;
后一个单词词尾:e,E 光标停留在下一个字的字尾位置;
前一个单词词首:b,B
当前屏幕首行:H
当前屏幕末行:L
当前屏幕中央:M
fx 往右移动到 x 字符上
Fx 往左移动到 x 字符上
tx 往右移动到 x 字符前
Tx 往左移动到 x 字符后
; 分号,配合 f 和 t 使用,重复一次
, 逗号,配合 f 和 t 使用,反方向重复一次
标记文本替换
mqq //用字符串qq来标记当前光标的位置
`qq //移至qq所标记处 (数字1键左边键的上档)
'qq //移至qq标记所在行的开头处(单引号)
'' //移至当前行上第一次所在位置的行的开头处(在光标移动之后,两个单引号)
" //移至当前行上一次所在位置(在光标移动之后)——1个双引号(测试不通过)