linux运维一天一个shell命令之vim详解

前言:

在日常运维工作中,掌握好 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
相关推荐
路溪非溪7 分钟前
关于Linux内核中头文件问题相关总结
linux
木易双人青14 分钟前
01-Docker-简介、安装与使用
运维·docker·容器
专注API从业者1 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
Lovyk2 小时前
Linux 正则表达式
linux·运维
Fireworkitte3 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9004 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char4 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
中科米堆5 小时前
中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
运维·自动化·汽车·视觉检测
淮北也生橘126 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
缘华工业智维6 小时前
CNN 在故障诊断中的应用:原理、案例与优势
大数据·运维·cnn