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

news2024/11/16 6:46:28

前言:

在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景

一、定义

Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快捷键,适合编写代码、编辑配置文件等。

1、特点:

  • 高级文本编辑:支持模式编辑(命令模式、插入模式、可视模式等),功能强大。
  • 可扩展性:通过插件进行功能扩展,常用插件管理器如 vim-plug。
  • 效率高:熟练使用后,编辑效率极高,适合大量文本处理和编程。
  • 跨平台使用:不仅在 Linux 上使用广泛,其他系统也有安装包。

2、安装:

ubuntu:
apt-get install vim

ceontos:
yum install vim*

3、启动和退出 Vim

3.1、启动 Vim 并打开文件:

vim filename

3.2、退出 Vim:

在普通模式下,输入 :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、普通模式下的操作

  • 导航
h:左移一个字符
j:下移一行
k:上移一行
l:右移一个字符
w:移动到下一个单词开头
b:移动到前一个单词开头
0:移动到行首
$:移动到行尾
gg:移动到文件开头
G:移动到文件结尾
  • 编辑
i:进入插入模式,在光标前插入文本
a:进入插入模式,在光标后插入文本
o:在当前行下方插入新行并进入插入模式
O:在当前行上方插入新行并进入插入模式
x:删除光标所在字符
dd:删除当前行
yy:复制当前行
p:粘贴复制或剪切的内容
  • 撤销和重做
u:撤销
Ctrl + r:恢复撤销的操作
  • 搜索
/pattern:向下搜索 pattern
?pattern:向上搜索 pattern
n:跳转到下一个匹配项
N:跳转到上一个匹配项

3、插入模式

3.1、进入插入模式

在普通模式下按 i、a、o 或 O 进入插入模式。

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、进入可视模式

在普通模式下,进入可视模式的方法如下:

- 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、编辑文本
d:删除选中的文本
y:复制选中的文本
c:修改选中的文本(删除并进入插入模式)
>:增加缩进
<:减少缩进
~:切换选中字符的大小写
U:将选中字符转换为大写
u:将选中字符转换为小写

4.4、行可视模式

4.4.1、选择行:

使用导航键(如 j、k)选择行。

4.4.2、编辑行
d:删除选中的行
y:复制选中的行
c:修改选中的行(删除并进入插入模式)
>:增加缩进
<:减少缩进

4.5、块可视模式

4.5.1、选择块

使用导航键(如 h、j、k、l)选择块

4.5.2、编辑块
d:删除选中的块
y:复制选中的块
c:修改选中的块(删除并进入插入模式)
I:在选中块的每一行前插入文本
A:在选中块的每一行后插入文本

4.6、退出可视模式

按 Esc 键。退出可视模式并返回普通模式

5、命令行模式

用于执行各种命令,例如保存文件、退出 Vim、搜索和替换文本等

5.1、进入命令行模式

: :执行命令
/:向前搜索
?:向后搜索
!:执行外部命令

5.2、命令操作

5.2.1、文件操作
:w:保存文件
:w filename:另存为指定文件
:q:退出 Vim
:q!:强制退出(不保存更改)
:wq:保存并退出
:x 或 ZZ:保存并退出
5.2.2、编辑操作
:e filename:编辑指定文件
:bn 或 :bnext:切换到下一个缓冲区
:bp 或 :bprev:切换到上一个缓冲区
:bd 或 :bdelete:删除当前缓冲区
5.2.3、搜索和替换
/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、设置选项
: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、命令行模式下的快捷键
<Up> / <Down>:浏览命令历史
<Left> / <Right>:在命令行中左右移动光标
<Ctrl + b>:移动到命令行的开头
<Ctrl + e>:移动到命令行的结尾
<Ctrl + w>:删除光标前的一个单词
<Ctrl + u>:删除光标前的所有文本

三、高频操作示例:

1、示例文档为默认nginx 配置文件,进入普通模式

root@xxx:~# /etc/nginx/nginx.conf

2、显示行号

:set nu

在这里插入图片描述

2、文本替换

:%s/SSL/ssl/g             ##全部替换
:%s/SSL/ssl              ##将当前行的第一个 old 替换为 new

3、文本查找

/SSL         ##查找SSL字符串

##搜索操作
n键:跳到下一个匹配项
N键:跳到上一个匹配项

4、批量删除行

光标放在需要删除的行

4dd    ##删除光标所在行开始的4行

5、编辑撤销

u键

6、恢复撤销的操作

Ctrl + r  组合键

7、批量注释

7.1 使用块可视模式批量注释

  • 进入块可视模式:按 Ctrl + v。
  • 选择要注释的列:使用 h、j、k、l 键。
  • 插入注释符号:按 Shift + i,或者大写I,输入注释符号(例如 #),然后按 Esc 键。这将在所选列的每一行前插入注释符号。

7.2 其他可视模式操作下的替换命令

  • 进入字符可视模式:按 v或者V
  • 选择要注释的文本,
  • 批量注释:按 :,然后输入 s/^/#/ 回车

8.批量复制粘贴

普通模式下

光标放在复制行首行
依次按4yy键    ##复制光标所在行的4行

然后光标放在需要插入行:
按p键即可粘贴 

四、vim终端命令

1、-h 或 --help:显示帮助信息并退出。

vim -h
vim --help

2、-v:以 Vi 模式启动 Vim。

vim -v

3 、-o [number]:打开多个文件,并按水平分割窗口显示。如果指定了 number,则分割为指定数量的窗口。

vim -o file1 file2 file3
vim -o3 file1 file2 file3

4、-O [number]:打开多个文件,并按垂直分割窗口显示。如果指定了 number,则分割为指定数量的窗口。

vim -O file1 file2 file3
vim -O3 file1 file2 file3

5、-c {command}:启动 Vim 后执行指定的命令。

vim -c 'echo "Hello, Vim!"'

6、+ 或 +{command}:启动 Vim 后移至文件末尾或执行指定的命令。

vim + file.txt
vim +5 file.txt  # 移动到文件的第 5 行

7、-s {script}:启动 Vim 后执行指定的脚本文件。

vim -s script.vim

8、-d:启动 Vim 的差异模式(diff),用于比较文件的差异。

vim -d file1 file2

9、-p [number]:打开多个文件,并在标签页中显示。如果指定了 number,则打开指定数量的标签页。

vim -p file1 file2 file3
vim -p3 file1 file2 file3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1982017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【神软大数据治理平台-高级动态SQL(接口开发)】

1、背景 业务部门需大数据平台按照所提需求提供企业数据接口&#xff0c;基于神软大数据治理平台-高级动态SQL功能&#xff0c;满足业务需求&#xff0c;如下&#xff1a; &#xff08;1&#xff09;业务系统需求&#xff1a; 输入&#xff1a; enterpriseName&#xff1a;…

【抖音卡片】在抖音私信的时候给对方发送抖音卡片链接

效果展示 效果说明 在默认情况下&#xff0c;给对方发送连接的时候是以文本的形式展示的可点击的超链接&#xff0c;但是经过处理之后可以将你发送的连接一样卡片的形式展示。 实现步骤 第一步&#xff1a;打开微信云托管 微信云托管 (qq.com)https://cloud.weixin.qq.com/c…

原装二手MSO5204B泰克DPO5204B混合信号示波器

泰克 MSO5204B混合信号示波器&#xff0c;2 GHz&#xff0c;4 16 通道&#xff0c;10 GS/s Tektronix MSO5204B 具有出色的信号保真度和高级分析和数学功能。 当今数据速率更快、时间裕度更严格&#xff0c;因此设计时需要具有出色信号采集性能和分析功能的示波器。Tektronix…

电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件

在芯片设计研发领域&#xff0c;负载调整率作为稳压电源芯片的关键性能指标&#xff0c;直接关系到芯片的稳定性和可靠性&#xff0c;因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述&#xff1a; 负载调整率…

阿里云oss存储之定期删除

存储到OSS中文件基于存储费用的考虑需要将存储指定时间的文件进行删除,如果想实现定期删除,有以下方法可以处理,简单记录一下: 1、oss控制台 配置生命周期策略删除,如附件1截图 2、通过sdk,调用DeleteObject请求删除文件 如client.delete(ossdemo/some-not-exists-object); …

matlab的strel()函数的使用方法(OK)

这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…

电脑运行库问题怎么修复?电脑运行库修复工具分享与实操

在我们日常使用电脑的过程中&#xff0c;经常会遇到一些因为运行库缺失或损坏而导致软件无法正常运行的问题。这些问题不仅影响工作效率&#xff0c;还可能导致数据丢失或程序崩溃。那么&#xff0c;电脑运行库怎么修复呢&#xff1f;本文将为您详细介绍如何使用运行库修复工具…

ETL数据集成丨将GreenPlum数据同步至Doris数仓

在当今数据驱动的时代&#xff0c;高效、可靠的数据集成成为企业数字化转型的关键一环。ETLCloud作为一款创新的数据集成平台&#xff0c;通过其强大的零代码配置能力&#xff0c;为企业提供了从数据抽取、转换到加载&#xff08;ETL&#xff09;的全链条解决方案&#xff0c;尤…

简单数学题——492、29、507 快速幂——50、372

简单数学题 492. 构造矩形&#xff08;简单&#xff09; 作为一位web开发者&#xff0c; 懂得怎样去规划一个页面的尺寸是很重要的。 所以&#xff0c;现给定一个具体的矩形页面面积&#xff0c;你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求&#…

排序算法2:直接选择排序与快速排序

目录 1.直接选择排序 1.1直接选择排序的优化 2.快速排序 2.1基准值的置位&#xff08;Hoare版&#xff09; 2.2挖坑法 2.3lomuto前后指针 前言 前面我们进入了排序算的讲解。今天我们将继续学习几种重要的排序思想&#xff0c;好&#xff0c;咱们三连上车开始今天的内容。…

Modern C++ 智能指针

Why&#xff1f; 原始指针存在缺陷&#xff0c;不符合现代编程语言的需要。 原始指针的缺陷&#xff1a; 指针指向一片内存&#xff0c;使用者无法得知到底是指向了什么&#xff0c;是数组还是对象&#xff1f;使用完指针是否需要销毁&#xff1f;什么时候销毁&#xff1f;如…

B1.2 AArch64 执行状态下的寄存器

B1.2 AArch64 执行状态下的寄存器 在AArch64的执行状态下,在 EL0 上可见的寄存器如下: (1)、R0-R30 31 个通用寄存器,R0 到 R30。每个都可以做为: 一个 64 位的通用寄存器,命名为 X0 到 X30。 一个 32 位的通用寄存器,命名为 W0 到 W30。 (2)、LR X30 通用寄存器用…

文件的读写

一、IO 标准io &#xff08;输入输出&#xff09;站在计算机角度来确定输入输出&#xff0c;在linux里面io都是对文件操作。 so 动态库函数&#xff08;共享库&#xff09;&#xff0c;&#xff08;公共的&#xff0c;用的很多&#xff09;&#xff0c;在user里面存储。 man手…

Studying-代码随想录训练营day58| 拓扑排序精讲、dijkstra(朴素版)精讲

第58天&#xff0c;拓扑排序和最短路径算法讲解&#xff01;&#xff01;&#x1f4aa;(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 拓扑排序精讲 拓扑排序的背景 题目&#xff1a;117. 软件构建 (kamacoder.com) 拓扑排序的思路 模拟过程 有环…

基于K8S配置Jenkins主从节点实例

基于K8S配置Jenkins主从节点实例 1.配置Jenkins主节点1.确认 Jenkins Pod 名称2.进入 Jenkins Pod&#xff1a;3.生成SSH密钥对4.将公钥复制到目标节点&#xff1a; 2.配置Jenkins的node1节点1.安装java2.配置 Jenkins node1节点的 Java 路径1.添加Java环境变量2.生效Java环境变…

如何根据 EcoVadis 审核的评分标准改进企业社会责任表现?

要根据 EcoVadis 审核的评分标准改进企业社会责任表现&#xff0c;可以采取以下步骤&#xff1a; ​深入研究评分标准 详细了解每个主题&#xff08;环境、劳工与人权、商业道德、可持续采购&#xff09;及其子主题的具体要求和关键指标。 进行自我评估 对照评分标准&#xf…

未授权访问漏洞(非重点 上)

1.MongoDB 1.在fofo里搜索 port"27017 2.Memcached 1.用fofa语法 port"11211" 搜索资产 2.使用 telnet 连接 3.Zookeeper 1.在 fofa 中使用 port"2181" 获取资源 2.在 kali 中使用 echo envinc ip 2181 测试是否存在漏洞 4.Elasticsearch 1.在 …

⌈ 传知代码 ⌋ MSA+抑郁症模型总结(二)

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Java语言程序设计——篇十一(5)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

基于arcpro3.0.2的北斗网格生成简介

基于arcpro3.0.2的北斗网格生成简介 采用2000坐标系、可基于行政区范围 软件可生成第一级到第十级北斗网格经纬跨度 等分 约赤道处距离 第一级 6X4度 60 和A~V 660 km 第二级 30X30分 12X8 …