前言:
在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景
一、定义
Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快捷键,适合编写代码、编辑配置文件等。
1、特点:
- 高级文本编辑:支持模式编辑(命令模式、插入模式、可视模式等),功能强大。
- 可扩展性:通过插件进行功能扩展,常用插件管理器如 vim-plug。
- 效率高:熟练使用后,编辑效率极高,适合大量文本处理和编程。
- 跨平台使用:不仅在 Linux 上使用广泛,其他系统也有安装包。
2、安装:
bash
ubuntu:
apt-get install vim
ceontos:
yum install vim*
3、启动和退出 Vim
3.1、启动 Vim 并打开文件:
bash
vim filename
3.2、退出 Vim:
bash
在普通模式下,输入 :q 退出。如果有未保存的更改,Vim 会提示你。
输入 :q! 强制退出且不保存更改。
输入 :wq 或 :x 保存更改并退出。
二、vim的使用
1、Vim 的几种主要模式:
- 普通模式(Normal Mode):这是 Vim 启动后的默认模式。在这个模式下,你可以进行导航和操作文本。
- 插入模式(Insert Mode):在这个模式下,你可以像普通编辑器一样输入文本。
- 命令模式(Command Mode):在这个模式下,你可以输入命令,如保存文件、退出 Vim、搜索等
- 可视模式(Visual Mode):在这个模式下,允许你选择文本块并对其执行操作
2、普通模式(Normal Mode)
2.1、进入普通模式:
启动vim 后默认进入普通模式
vim /filename
2.2、普通模式下的操作
- 导航
bash
h:左移一个字符
j:下移一行
k:上移一行
l:右移一个字符
w:移动到下一个单词开头
b:移动到前一个单词开头
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件结尾
- 编辑
bash
i:进入插入模式,在光标前插入文本
a:进入插入模式,在光标后插入文本
o:在当前行下方插入新行并进入插入模式
O:在当前行上方插入新行并进入插入模式
x:删除光标所在字符
dd:删除当前行
yy:复制当前行
p:粘贴复制或剪切的内容
- 撤销和重做
bash
u:撤销
Ctrl + r:恢复撤销的操作
- 搜索
bash
/pattern:向下搜索 pattern
?pattern:向上搜索 pattern
n:跳转到下一个匹配项
N:跳转到上一个匹配项
3、插入模式
3.1、进入插入模式
在普通模式下按 i、a、o 或 O 进入插入模式。
bash
i:在光标前插入。
I:在行首插入。
a:在光标后插入。
A:在行尾插入。
o:在当前行的下方插入新行并进入插入模式。
O:在当前行的上方插入新行并进入插入模式。
3.2、退出插入模式
要退出插入模式并返回普通模式,可以按 Esc 键
4、可视模式
4.1、分类
- 字符可视模式(Character-wise Visual Mode) 字符可视模式允许你逐字符选择文本。
- 行可视模式(Line-wise Visual Mode) 行可视模式允许你逐行选择文本。
- 块可视模式(Block-wise Visual Mode) 块可视模式允许你选择矩形文本块
4.2、进入可视模式
在普通模式下,进入可视模式的方法如下:
bash
- v:进入字符可视模式(Character-wise Visual Mode)
- V:进入行可视模式(Line-wise Visual Mode)
- Ctrl + v:进入块可视模式(Block-wise Visual Mode)
4.3、字符可视模式下的操作
4.3.1、选择文本:
使用导航键(如 h、j、k、l)选择文本。
4.3.2、编辑文本
bash
d:删除选中的文本
y:复制选中的文本
c:修改选中的文本(删除并进入插入模式)
>:增加缩进
<:减少缩进
~:切换选中字符的大小写
U:将选中字符转换为大写
u:将选中字符转换为小写
4.4、行可视模式
4.4.1、选择行:
使用导航键(如 j、k)选择行。
4.4.2、编辑行
bash
d:删除选中的行
y:复制选中的行
c:修改选中的行(删除并进入插入模式)
>:增加缩进
<:减少缩进
4.5、块可视模式
4.5.1、选择块
使用导航键(如 h、j、k、l)选择块
4.5.2、编辑块
bash
d:删除选中的块
y:复制选中的块
c:修改选中的块(删除并进入插入模式)
I:在选中块的每一行前插入文本
A:在选中块的每一行后插入文本
4.6、退出可视模式
按 Esc 键。退出可视模式并返回普通模式
5、命令行模式
用于执行各种命令,例如保存文件、退出 Vim、搜索和替换文本等
5.1、进入命令行模式
bash
: :执行命令
/:向前搜索
?:向后搜索
!:执行外部命令
5.2、命令操作
5.2.1、文件操作
bash
:w:保存文件
:w filename:另存为指定文件
:q:退出 Vim
:q!:强制退出(不保存更改)
:wq:保存并退出
:x 或 ZZ:保存并退出
5.2.2、编辑操作
bash
:e filename:编辑指定文件
:bn 或 :bnext:切换到下一个缓冲区
:bp 或 :bprev:切换到上一个缓冲区
:bd 或 :bdelete:删除当前缓冲区
5.2.3、搜索和替换
bash
/pattern:向前搜索匹配 pattern 的文本
?pattern:向后搜索匹配 pattern 的文本
n:跳到下一个匹配项
N:跳到上一个匹配项
:s/old/new:将当前行的第一个 old 替换为 new
:s/old/new/g:将当前行的所有 old 替换为 new
:%s/old/new/g:将整个文件中的所有 old 替换为 new
:%s/old/new/gc:将整个文件中的所有 old 替换为 new,并确认每一次替换
5.2.4、设置选项
bash
:set option:启用指定选项
:set nooption:禁用指定选项
:set number 或 :set nu:显示行号
:set nonumber 或 :set nonu:隐藏行号
:set tabstop=4:设置 Tab 宽度为 4 个空格
:set shiftwidth=4:设置自动缩进宽度为 4 个空格
:set expandtab:使用空格代替 Tab
:set noexpandtab:使用 Tab 而不是空格
5.2.5、命令行模式下的快捷键
bash
<Up> / <Down>:浏览命令历史
<Left> / <Right>:在命令行中左右移动光标
<Ctrl + b>:移动到命令行的开头
<Ctrl + e>:移动到命令行的结尾
<Ctrl + w>:删除光标前的一个单词
<Ctrl + u>:删除光标前的所有文本
三、高频操作示例:
1、示例文档为默认nginx 配置文件,进入普通模式
root@xxx:~# /etc/nginx/nginx.conf
2、显示行号
bash
:set nu
2、文本替换
bash
:%s/SSL/ssl/g ##全部替换
:%s/SSL/ssl ##将当前行的第一个 old 替换为 new
3、文本查找
bash
/SSL ##查找SSL字符串
##搜索操作
n键:跳到下一个匹配项
N键:跳到上一个匹配项
4、批量删除行
光标放在需要删除的行
bash
4dd ##删除光标所在行开始的4行
5、编辑撤销
bash
u键
6、恢复撤销的操作
bash
Ctrl + r 组合键
7、批量注释
7.1 使用块可视模式批量注释
- 进入块可视模式:按 Ctrl + v。
- 选择要注释的列:使用 h、j、k、l 键。
- 插入注释符号:按 Shift + i,或者大写I,输入注释符号(例如 #),然后按 Esc 键。这将在所选列的每一行前插入注释符号。
7.2 其他可视模式操作下的替换命令
- 进入字符可视模式:按 v或者V
- 选择要注释的文本,
- 批量注释:按 :,然后输入 s/^/#/ 回车
8.批量复制粘贴
普通模式下
bash
光标放在复制行首行
依次按4yy键 ##复制光标所在行的4行
然后光标放在需要插入行:
按p键即可粘贴
四、vim终端命令
1、-h 或 --help:显示帮助信息并退出。
bash
vim -h
vim --help
2、-v:以 Vi 模式启动 Vim。
bash
vim -v
3 、-o [number]:打开多个文件,并按水平分割窗口显示。如果指定了 number,则分割为指定数量的窗口。
bash
vim -o file1 file2 file3
vim -o3 file1 file2 file3
4、-O [number]:打开多个文件,并按垂直分割窗口显示。如果指定了 number,则分割为指定数量的窗口。
bash
vim -O file1 file2 file3
vim -O3 file1 file2 file3
5、-c {command}:启动 Vim 后执行指定的命令。
bash
vim -c 'echo "Hello, Vim!"'
6、+ 或 +{command}:启动 Vim 后移至文件末尾或执行指定的命令。
bash
vim + file.txt
vim +5 file.txt # 移动到文件的第 5 行
7、-s {script}:启动 Vim 后执行指定的脚本文件。
bash
vim -s script.vim
8、-d:启动 Vim 的差异模式(diff),用于比较文件的差异。
bash
vim -d file1 file2
9、-p [number]:打开多个文件,并在标签页中显示。如果指定了 number,则打开指定数量的标签页。
bash
vim -p file1 file2 file3
vim -p3 file1 file2 file3