vim是一个全屏模式编辑器。
分为三种模式:
- 命令或普通(Normal)模式:默认模式,可以实现移动光标,剪切/粘贴文本
- 插入(insert)或编辑模式:用于修改文本
- 扩展命令(extended command)或命令(末)行模式:保存,退出等
在不同模式下敲击相同的按键具有不同的意义。
插入模式和扩展命令模式不可以直接切换,需要先退到命令模式然后再切换到插入或扩展命令模式。
即:
插入模式 ----->命令模式-------->扩展命令模式
扩展命令模式----->命令模式------->插入模式
模式切换
使用命令vim打开文件
这个界面就是命令模式(默认进入)。
命令模式 --------------------------> 插入模式
下列按键皆可
i insert, 在光标所在处输入
I 在当前光标所在行的行首输入
a append, 在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
插入模式下方显示INSERT
底部显示:表示扩展命令模式
命令模式 --------------------------> 扩展命令模式
直接敲冒号 :
插入模式 -------------------------> 命令模式
按ESC键
扩展命令模式 -------------------------> 命令模式
按ESC键或enter或退格键
(1) 扩展命令下的基本操作
w 保存文件
wq 保存并退出
x 写入并退出
X 加密
q 退出
q! 强制退出,不更改文件
r filename 读文件内容到当前文件中
w filename 将当前文件内容写入另一个文件
!command 执行命令
r!command 读入命令的输出
编辑文件
:2d 删除第2行
:2,4d 删除第2到第4行
:2;+3y 复制第2到第5行,总共4行
:3;+4w test 将第2到第5行,总共4行内容写入新文件
:5r /etc/issue 将/etc/issue 文件读取到第5行
:t2 将光标所在行复制到第2行
:2;+3t10 将第2到第5行,总共4行内容复制到第10行之后
:.d 删除光标所在行
:$y 复制最后一行
替换内容
:s/要查找的内容/替换为的内容/修饰符
:%s 表示全文查找替换
编辑命令:
p 输出
d 删除
y 复制
w file 将范围内的行另存至指定文件中
r file 在指定位置插入指定文件中的所有内容
t行号 将前面指定的行复制到N行后
m行号 将前面指定的行移动到N行后
设置行号
:set number|set nu #显示行号
:set nonumber|set nonu #取消显示行号
设置光标所在行的标识线
:set cursorline|set cul #给光标所在行加下划线
:set nocursorline|set nocul #取消光标下划线
(2)命令模式基本操作
命令模式退出vim
ZZ 保存退出
ZQ 不保存退出
方向键控制光标移动
行首行尾跳转
^ #跳转至行首的第一个非空白字符
0 #跳转至行首
$ #跳转至行尾
行间跳转
NG|:N #跳转至指定行,N表示正整数,比如 10G,或在扩展命令模式下:10,都表示跳转到第10
行
G #最后一行
gg|1G #第一行
删除命令
d 删除命令,可结合光标跳转字符,实现范围删除
d$|D 删除光标处到行尾
d^ 删除光标处到非空行首
d0 删除光标处到处行首
dw 从光标处删到下一个单词的词首
de 从光标处删到当前单词词尾或下一单词的词尾
db 从光标处删到当前单词词首或前一单词的词首
dG 删除光标到文件末尾
dgg 删除光标到文件开始
dd 删除光标所在行
Ndd 从当前行开始,删N行,N表示正整数,2dd表示从当前行开始,总共删2行
这些内容都在缓冲区,可以用p键粘贴出来
复制命令
y 复制,行为相似于d命令
y$ 复制光标处到行尾
y0 复制光标处到行首
y^ 复制光标处到非空行首
yy|Y 复制整行,yy前面加数字,表示从当前处往后复制多少行; 3yy 表示往下复制3行
Nyy 从当前处往后复制N行, N表示正整数,2yy表示从当前行开始,总共复制2行
yw 从光标处复制到下一个单词的词首
ye 从光标处复制到当前单词词尾或下一单词的词尾
yb 从光标处复制到当前单词词首或下一单词的词首
粘贴命令
p 小写 p 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前
光标所在处的后面
P 大写 p 缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前
光标所在处的前面
撤消更改
u 撤销最近的更改,相当于windows中ctrl+z
Nu 撤销之前多次更改,N表示正整数
U 撤消光标落在这行后所有此行的更改
Ctrl+r 重做最后的“撤消”更改,相当于windows中crtl+y
. 重复前一个操作
N. 重复前一个操作N次,N为正整数
查找
/PATTERN #从当前光标所在处向文件尾部查找
?PATTERN #从当前光标所在处向文件首部查找
n #与命令同方向
N #与命令反方向
(3)替换命令替换模式
r #只替换光标所在处的一个字符,先敲r,再输入想要替换的新字符
R #切换成REPLACE模式(在末行出现-- REPLACE -- 提示),按ESC回到命令模式
(4) 可视化模式
在文件末尾显示
“-- VISUAL --”
“-- VISUAL LINE --”
“-- VISUAL BLOCK --”
表示在可视化模式
v面向字符
V面向整行
ctrl v面向块
可视化键可用于与移动键结合使用
w ) } 箭头等
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
示例:在文件指定的行首插入#
可视化键可用于与移动键结合使用方向箭头等
突出显示的文字可被删除,复制,变更,过滤,搜索,替换等
范例:在文件指定行的行首插入#
1、先将光标移动到指定的第一行的行首
2、输入ctrl+v 进入可视化模式
3、向下移动光标,选中希望操作的每一行的第一个字符(按方向键)
4、输入大写字母 I 切换至插入模式
5、输入 #
6、按 ESC 键,稍等片刻会在所有行行首添加#
范例:在指定的块位置插入相同的内容