admin 管理员组

文章数量: 887016

目录

1 文件操作

1.1 在终端窗口中打开文件

1.2 操作文件

2 光标移动

2.1 行内移动

2.2 跨行移动 

2.3 翻页和滚屏

2.4 标记

3 插入

4 撤销和重做

5 选取

6 删除

6.1 正常模式下

6.2 选取模式下

6.3 正则表达式下 

7 复制

7.1 正常模式下

7.2 选取模式下

8 粘帖

9 查找和替换

9.1 普通查找

9.2 普通并替换


1 文件操作

1.1 在终端窗口中打开文件

命令说明
$ vim ~/mark.txt打开文件
$ vim -R ~/mark.txt以只读方式打开文件
$ vim ~/mark.txt ~/mark2.txt打开多个文件,显示第一个文件
$ vim -O2 ~/mark.txt ~/mark2.txt打开多个文件,水平排列窗口
$ vim -o2 ~/mark.txt ~/mark2.txt打开多个文件,垂直排列窗口

1.2 操作文件

命令说明
:e ~/mark.txt在vim中打开文件
:tabnew ~/mark.txt在vim中新建标签页打开文件
:w保存文件
:w!强制保存文件
:w ~/mark.txt以输入的文件名另存文件
:q退出
:q!放弃当前文件的修改,强制退出
:qa!放弃全部文件的修改,强制退出
:wq保存文件并退出
:wq!强制保存文件并退出
:e!放弃所有修改,回退到最后一次保存文件的状态
:x保存文件并退出,只读文件需要用:wq!(作用相同)

2 光标移动

2.1 行内移动

命令说明
h向左移动
j向下移动
k向上移动
l向右移动
0移动光标至行首,注意是数字0不是字母o
$移动光标至行尾
^移动光标至第一个非空字符
g_移动光标至最后一个非空字符首
w移动光标至下一个单词的开头
W移动光标至下一个单词(只考虑字母和数字)的开头
b移动到当前单词的开头
B移动到当前单词(只考虑字母和数字)的开头
e移动光标至下一个单词的结尾
9l光标向后移动9个字符
fa移动光标至下一个字符a
Fa移动光标至前一个字符a
2fa向后移动光标至第2个字符a
2Fa向前移动光标至第2个字符a
ta移动光标至下一个字符a之前
Ta移动光标至前一个字符a之后
2ta向后移动光标至第2个字符a之前
2Ta向前移动光标至第2个字符a之后

2.2 跨行移动 

命令说明
G移动光标至尾行行首
gg移动光标至首行行首
9G移动光标至第9行行首
9gg移动光标至第9行行首
:9移动光标至第9行行首(需要按回车键)
H移动光标至可视区域首行行首
M移动光标至可视区域中间行行首
L移动光标至可视区域尾行行首
zt把当前行移动到可视区域首行
zz把当前行移动到可视区域中间行
zb把当前行移动到可视区域尾行
%移动光标至匹配的符号(前提是光标位于符号处,默认支持'()', '{}', '[]' )

2.3 翻页和滚屏

命令说明
Ctrl + f下一页,光标位于可视区域首行首个非空字符
Ctrl + b上一页,光标位于可视区域尾行首个非空字符
Ctrl + e向下滚动一行,光标不变或位于可视区域首行
Ctrl + y向上滚动一行,光标不变或位于可视区域尾行
Ctrl + u向上滚动半屏,光标不变或位于可视区域尾行
Ctrl + d向下滚动半屏,光标不变或位于可视区域尾行

2.4 标记

命令说明
m{a-z}标记光标所在位置(局部标记,仅限于当前文件跳转)
m{A-Z}标记光标所在位置(全句标记,可用于跨文件跳转
'{m}移动光标至标记m所在行首个非空字符
`{m}移动光标至标记m所标记的位置
:marks显示所有标记
:delmarks {m}删除标记m
:delmarks!删除所有标记

3 插入

命令说明
i在光标所在字符之前插入
I在光标所在行行首插入
a在光标所在字符之后插入
A在光标所在行行尾插入
o在光标所在行的下一行行首插入
O在光标所在行的上一行行首插入
s删除光标所在字符,然后插入
S删除光标所在行内容,然后插入
cw删除从光标处开始到该单词结束的字符,然后插入
ciw删除光标所在单词,然后插入

4 撤销和重做

命令说明
u撤销最近的修改
3u撤销最近的3次修改
Ctrl +r重做最近撤销的修改
3Ctrl +r重做最近撤销的3次修改
U恢复光标所在行至初始状态

5 选取

选取操作的流程可分为3步:

  1. 移动光标至开始位置
  2. 按v(正常选取)或Ctrl +v(块选取)进入选取模式
  3. 移动光标至结束位置
命令说明
v切换至正常选取模式
Ctrl +v切换至块选取模式(允许在文本中选择一个矩形块,而不是常规的连续文本)

6 删除

删除操作也会将删除的内容存入寄存器

6.1 正常模式下

删除的内容保存在默认寄存器(‘’)中

命令说明
dd删除当前行
d0删除行首至光标位置前的内容
d$删除光标位置至行尾的内容
3dd删除自当前行开始的3行内容
x删除光标所在字符
X删除光标之前的字符
dw删除到光标所在单词的下一个单词开头
dW删除到光标所在单词(包括标点符号)的下一个单词开头
de删除到光标所在单词末尾
dE删除到光标所在单词(包括标点符号)末尾
db删除光标所在单词的光标前的内容
dB删除光标所在单词(包括标点符号)的光标前的内容
J删除当前行回车符
3J删除自当前行开始的3行回车符

6.2 选取模式下

可以指定保存删除内容的寄存器,同时默认寄存器也会保存删除的内容。

命令说明
d删除选取内容,保存到默认寄存器(")
""d删除选取内容,保存到默认寄存器(")
"+d删除选取内容,保存到系统剪贴板寄存器(+)
"{0-9}d删除选取内容,保存到数字寄存器(0-9)
"{a-z}d删除选取内容,保存到数字寄存器(a-z)

6.3 正则表达式下 

命令说明
:g/^$/d删除空行
:g/^\s*$/d删除包含空格的空行

7 复制

7.1 正常模式下

正常模式下,复制的内容保存在默认寄存器(‘’)中 

命令说明
yy复制当前行
y0复制行首至光标位置前的内容
y$复制光标位置至行尾的内容
3yy复制自当前行开始的3行内容
yw复制到光标所在单词的下一个单词开头
yW复制到光标所在单词(包括标点符号)的下一个单词开头
ye复制到光标所在单词末尾
yE复制到光标所在单词(包括标点符号)末尾
yb复制光标所在单词的光标前的内容
yB复制光标所在单词(包括标点符号)的光标前的内容

7.2 选取模式下

可以指定保存复制内容的寄存器,同时默认寄存器也会保存复制的内容

命令说明
y复制选取内容,保存到默认寄存器(")
""y复制选取内容,保存到默认寄存器(")
"+y复制选取内容,保存到系统剪贴板寄存器(+)
"{a-z}y复制选取内容,保存到字母寄存器(a-z)
"{0-9}y复制选取内容,保存到数字寄存器(0-9)

8 粘帖

粘帖只能在正常模式下执行。 

命令说明
P在光标之后粘帖默认寄存器(")的内容
p在光标之前粘帖默认寄存器(")的内容
"+P在光标之后粘帖系统剪贴板寄存器(+)的内容
"+p在光标之前粘帖系统剪贴板寄存器(+)的内容
"{a-z}P在光标之后粘帖字母寄存器(a-z)的内容
"{a-z}p在光标之前粘帖字母寄存器(a-z)的内容
"{0-9}P在光标之后粘帖数字寄存器(0-9)的内容
"{0-9}p在光标之前粘帖数字寄存器(0-9)的内容

9 查找和替换

9.1 普通查找

查找只能在正常模式下执行。vim使用/和?区分正向和反向查找,使用封闭的尖括号(需要反斜杠转义)表示全词匹配,支持正则表达式,可以实现复杂的查找功能。 

命令说明
*正向搜索光标所在单词并高亮显示,光标下移至搜索目标
#反向搜索光标所在单词并高亮显示,光标上移至搜索目标
/str正向搜索str(大小写敏感)并高亮显示,光标下移至搜索目标
/str\c正向搜索str(大小写不敏感)并高亮显示,光标下移至搜索目标
/str\C正向搜索str(大小写敏感)并高亮显示,光标下移至搜索目标
/\<str\>正向搜索str(全词匹配)并高亮显示,光标下移至搜索目标
/^str正向搜索以str开头的行并高亮显示,光标下移至搜索目标
/str$正向搜索以str结尾的行并高亮显示,光标下移至搜索目标
/str_1\|str_2正向搜索str_1或str_2并高亮显示,光标下移至搜索目标

 查找到结果后,使用下面的命令可以在搜索结果中前后移动光标

命令说明
n光标后移至另一个搜索目标
N光标前移至另一个搜索目标
:noh取消高亮

9.2 普通并替换

 查找替换的命令是s,其后是查找目标的正则表达式,紧接着是替换的内容,三者之间使用/连接。

命令说明
:s/str_old/str_new将光标所在行的首个str_old替换为str_new
:s/str_old/str_new/g将光标所在行的全部str_old替换为str_new
:s/\<str_old\>/str_new/g将光标所在行的全部str_old替换为str_new
:2,9s/str_old/str_new/g将2-9行的全部str_old替换为str_new
:2,$s/str_old/str_new/g将第2行至结尾的全部str_old替换为str_new
:%s/str_old/str_new/g将全文的str_old替换为str_new
:%s/str//gn统计str在全文出现的次数

本文标签: 命令 操作 Linux vim