简介
? ? vim是一款针对Linux和其他类Unix操作系统的文本编辑器。它是Vi编辑器的升级版本,具有丰富的功能和强大的扩展性。vim有三种基本模式:命令模式、插入模式和可视模式。
- 命令模式:用户可以使用各种命令移动光标和进行编辑操作,如删除、复制、粘贴等。
- 插入模式:用户可以在当前位置插入文本。
- 可视模式:可以使得用户可以非常容易地选择文本块并进行处理。
????????
文章目录如下
????????
vim 一般直接对文件进行操作
vim 文件名
它本身也自带参数,常见用法如下:
-d:diff模式,对比两个文件的差异性
# vim -d file1 file2
-D:调试模式
# vim -D file
-P:打开多个标签
# vim -P file1 file2 file3
-O:打开多个文件窗口
# vim -O file1 file2 file3,使用末行模式进行文件间切换(:1n 切换下一个文件 或者 Ctrl + ww,:1N 切换上一个文件)
+ :启动后调到末行
# vim + file
+[n]:n 表示数字,直接进入n行
# vim +3 file 启动后光标调到第3行
-r:恢复上次异常退出时的编辑进度。
-o/-O:垂直/水平分割屏幕并打开多个文件。
-r:以只读模式打开文件。
-R:以只读模式打开文件,禁用自动保存和修改。
-g/-f:开启图形模式/禁用图形模式。
????????
插入模式是指在编辑器中可以输入和编辑文本的模式。在插入模式下,可以通过键盘输入文本内容,并且编辑器会立即显示你输入的内容。
使用vim打开文件时属于可视模式,这个模式下是无法写入字符的
????????
需要进入插入模式时,直接按 i 键即可在光标位置插入
进入插入模式后便不再有命令,所有输出的字符都将显示到文件中。
退出插入模式按 Esc 键。
????????
除了使用 i 命令插入,还有一些其他常用命令
“i” 键:在当前光标处进入插入模式
“I” 键:在当前行的开头进入插入模式
“a” 键:在当前光标后1个位置进入插入模式
“A” 键:在当前行的末尾进入插入模式
“o” 键:在当前行的下一行插入新行,并进入插入模式
“O” 键:在当前行的上一行插入新行,并进入插入模式
“s” 键:删除当前光标所在的单个字符,并进入插入模式
“S” 键:删除当前行的所有字符,并进入插入模式
????????
命令模式就是在刚打开文件时,或按 Esc 键后的模式,在该模式下可以使用命令进行查看文件,删除文件,复制粘贴文件等。
翻页查看文件
Ctrl + f :向下翻页
Ctrl + b :向上翻页
????????
移动光标到n行
gg:移动到文件最顶端
H :移动到当前页最顶端
G :移动到文件最底端
L :移动到当前页最底端
3G:移动到第3行,3可以设置为任意数字
????????
移动光标在当前行的位置
^ :移动到当前行第1列
$ :移动到当前行最后1列
w :移动到下一段字母开头
e :移动到下一段字母结尾
????????
复制某行
yy :复制当前行
Y :复制当前行
y2y:向下复制2行
yG :复制当前行到最后1行
ygg:复制当前行到第1行
y2g:复制当前行到第2行
????????
粘贴某行
p :将复制的行粘贴到光标下面一行
P :将复制的行粘贴到光标上面一行
????????
dd: 删除当前行
D : 删除当前行光标到末尾
dG: 删除光标行到最后1行
dgg:删除光标行到第1行
d↓: 删除光标行向下2行
d↑: 删除光标行向上2行
d5↓:删除光标行向下5行
d5↑:删除光标行向上5行
????????
u :撤销上一次命令
Ctrl + r:恢复上一次命令
????????
ZZ: 保存并退出文件
ZQ: 不保存并退出文件
????????
末行模式允许执行各种命令、搜索文本、保存文件以及设置编辑器选项等操作。在末行模式下,可以在编辑器底部的命令行输入命令,并按回车键执行。
末行模式有3种命令
?:? 模式:在该模式下执行命令
?????????
?/?模式:在该模式下向下搜索字符串
?????????
???模式:在该模式上向下搜索字符串
????????
:w # 保存文件
:q # 退出文件
:q! # 强制退出文件(不保存)
:wq # 保存并退出文件
:wq! # 强制保存并退出文件
????????
【案例一】注释整个文件
:%s/^/#/
????????
【案例二】仅注释1~3行
:1,3s/^/#/
????????
【案例三】取消全部注释
:%s/^#//
????????
【案例四】取消10~20行注释
:10,20s/^#//
????????
【案例一】将所有b替换为BBB
:%s/b/BBB/g
????????
?【案例二】将所有行第1个b替换为BBB
:%s/b/BBB/
????????
?【案例三】将第10~20行所有b替换为BBB
:10,20s/b/BBB/g
????????
?【案例四】在所有行的行首添加字符BBB
:%s/^/BBB/
????????
?【案例五】在所有行的行尾添加符号 ;
:%s/$/;/
????????
注意:分隔符 / 是可修改的
将 /home/yt 修改为 /home/root
:%s#/home/yt#/home/root#g
????????
删除全部行
:%d
删除5~10行
:5,10d
删除包含 abc 的行
:g/abc/d
删除以abc开头的行
:g/^abc/d
?删除以abc结尾的行
:g/abc$/d
删除空行
:g/^\n/d
?????????
【案例一】向下搜索ab字符
/ab
????????
【案例二】向上搜索ab字符
?ab
????????
【案例三】向下搜索ab和ac的字符
/ab\|ac
????????
【案例四】搜寻关键字
“n” 键 # 向下搜寻关键字
“N” 键 # 向上搜寻关键字
????????
设置行号
:set nu # 显示行号
:set nonu # 取消行号
设置关键字高亮
:set hls # 关键字显示高亮
:noh # 关键字取消高亮
拼写检查
:set spell # 开启拼写检查
:set nospell # 关闭拼写检查
设置文件格式
:set fileformat=unix # 将文本格式设置为Linux格式 (windows 中编写的脚本在 Linux 执行时,可能出现换行符不匹配等问题,可以使用此设置)
设置缩进
:set expandtab tabstop=4 # 将制表符设置为4个空格
:set noexpandtab # 禁止将制表符转换为空格。
设置对齐
set textwidth=80 # 设置文本宽度为80个字符,在达到该宽度时自动换行。
set formatoptions+=a # 启用自动对齐,对齐方式取决于文件类型和格式选项。
set formatoptions-=cro # 禁用换行操作符的自动换行。
????????
可视模式可以选择一段连续的文本并对其进行复制、剪切、粘贴等操作,从而提供了更精确和灵活的文本编辑能力。
1、Ctrl + v 光标行进入可视块
2、使用上下键选中需要注释的行
3、按下命令 "I键",这时候进入编辑模式
4、按下命令 "#键"
5、按 "Esc键" 即可注释
第4步按下 #键,也可以是其他字符,可输入多个。比如第4步改为abc,那么在选中行哪里就会添加abc
????????
1、Ctrl + v 光标行进入可视块
2、使用上下左右键选中需要删除的行、字符
3、按下命令 "d键",删除
同样的方法,我们可以选择被注释的行,选中首行的#符号,按 "d键" 删除