Linux中的Vim文本编辑器
Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。
一、基本操作
-
启动Vim
vim
:直接启动Vim编辑器。vim filename
:打开或创建文件并启动Vim进行编辑。
-
模式切换
-
Vim有三种主要模式:正常模式(Normal Mode)、插入模式(Insert Mode)和命令行模式(Command-line Mode)。
- 正常模式:默认模式,用于执行大多数命令。
- 插入模式:用于输入文本。
- 命令行模式:用于执行保存、退出等命令。
-
切换模式:
- 从正常模式到插入模式:
i
(在当前位置插入)、I
(在当前行首插入)、a
(在当前位置后插入)、A
(在当前行尾插入)、o
(在当前行下新开一行插入)等。 - 从插入模式到正常模式:按
Esc
键。
- 从正常模式到插入模式:
-
二、编辑命令
-
复制和粘贴
- 复制:
yy
(复制当前行)、y$
(复制至行尾)、yw
(复制一个单词)、yG
(复制到文件末尾)等。 - 粘贴:
p
(在光标后粘贴)、P
(在光标前粘贴)。
- 复制:
-
删除
x
:删除当前字符。X
:删除前一个字符(等价于dh
)。dd
:删除当前行。D
或d$
:删除从当前光标位置到行尾的所有字符。dw
:删除一个单词。
-
撤销和重做
u
:撤销上一次操作。Ctrl + r
:重做上一次撤销的操作。
三、移动光标
-
基本移动
h
:左移一个字符。j
:下移一行。k
:上移一行。l
:右移一个字符。
-
单词间移动
w
:向前移动到下一个单词的开头。e
:向前移动到下一个单词的末尾。b
:向后移动到上一个单词的开头。
-
行内移动
0
(数字零):移动到行首。^
:移动到行首的第一个非空白字符。$
:移动到行尾。
-
页面移动
Ctrl + f
:向下滚动一页。Ctrl + b
:向上滚动一页。Ctrl + d
:向下滚动半页。Ctrl + u
:向上滚动半页。
-
文件内移动
gg
:移动到文件的第一行。G
:移动到文件的最后一行。:n
(n为行号):移动到文件的第n行。
四、查找和替换
-
查找
/text
:向前查找text。?text
:向后查找text。n
:查找下一个匹配项。N
:查找上一个匹配项。
-
替换
:s/old/new/
:将当前行的第一个old替换为new。:s/old/new/g
:将当前行的所有old替换为new。:%s/old/new/g
:将文件中的所有old替换为new。
五、保存和退出
-
保存
:w
:保存当前文件。:w filename
:将当前文件另存为filename。
-
退出
:q
:如果文件未修改,则退出Vim。:q!
:强制退出Vim,不保存任何修改。:wq
或ZZ
:保存并退出Vim。
六、其他常用命令
-
分屏操作
:split
或:sp
:水平分割窗口。:vsplit
或:vsp
:垂直分割窗口。Ctrl + w + w
:在分屏间切换。
-
设置
:set nu
:显示行号。:set nonu
:不显示行号。:set hlsearch
:高亮显示搜索结果。:set nohlsearch
:关闭高亮显示。
-
录制宏
qa
:开始录制宏a。- …(执行一系列命令)
q
:结束录制。@a
:执行宏a。
-
执行外部命令
:!command
:在Vim中执行外部命令。
七、高级技巧
-
多文件编辑
vim file1 file2
:同时打开多个文件。:next
或:n
:切换到下一个文件。:prev
或:p
:切换到上一个文件。:first
:切换到第一个文件。:last
:切换到最后一个文件。
-
文本对象操作
- Vim支持多种文本对象,如
iw
(内部单词)、aw
(一个单词)、ip
(内部段落)等,可以与删除、复制等命令结合使用。
- Vim支持多种文本对象,如
-
可视模式
- 在正常模式下,按
v
进入可视模式,按V
进入可视行模式,按Ctrl + v
进入可视块模式。在可视模式下,可以选择文本块并执行删除、复制等操作。
- 在正常模式下,按
以上就是Vim编辑器的一些常用命令和高级技巧。Vim的功能非常强大,这里只是列举了一部分常用的命令和技巧。通过不断的学习和实践,你可以逐渐掌握Vim的更多高级功能和技巧,从而提高你的文本编辑效率。
相关文章:
Linux中的Vim文本编辑器
Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。 一、基本操作 启动Vim vim:直接启动Vim编辑器…...

rancher搭建k8s及jenkins自动化部署
1、准备环境 角色IP用途k8s-rancher-master192.168.3.63master节点k8s-rancher-node01192.168.3.64node节点k8s-rancher-node02192.168.3.66node节点k8s-rancher-server192.168.2.33rancher-server节点注: 服务器名需要配置不同,相同服务器名不能加入node节点 在所有节点进行…...
vue el-dialog嵌套解决无法点击问题
产生原因: 当你在 el-dialog 上嵌套另一个 el-dialog 窗口时,可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层(overlay)或其他样式问题造成的。 解决方案: 如果你的 el-dialog 组件支持 append-to-body 属性ÿ…...
c# c++程序 交互
目录 一、两种不同程序写的进程交互 1、定义交互消息 2、定义C进程发来的消息ID 3、定义C进程交互的句柄 及给C进程发送的消息ID 4、定义交互消息所需的数据类型 5、引入所需的系统函数 6、给主进程发消息 7、写入本进程主窗口句柄 8、处理发来的交互消息 一、两种不…...
解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题
一、场景重现 使用rouyi框架时,可以看到很多分页查询,如: //-----------SysConfigController------------- GetMapping("/list") public TableDataInfo list(SysConfig config) {startPage();List<SysConfig> list config…...

RabbitMQ 应用
文章目录 前言1. Simple 简单模式2. Work Queue 工作队列模式3. Pubulish/Subscribe 发布/订阅模式Exchange 的类型 4. Routing 路由模式5. Topics 通配符模式6. RPC RPC通信7. Publisher Confirms 发布确认1. 单独确认2. 批量确认3. 异步确认 前言 前面我们学习了 RabbitMQ 的…...
使用Python读取Excel数据的详细指南
在数据分析中,Excel文件是一种常见的数据存储格式。使用Python读取Excel数据可以帮助我们更方便地进行数据处理和分析。本文将介绍如何在Python 2和Python 3中读取Excel数据,具体步骤和代码示例详细说明。 准备工作 在开始之前,请确保你已经…...
VitePress 动态路由与路径加载器详解
在使用 VitePress 构建静态网站时,动态路由功能允许我们通过单个 Markdown 文件和动态数据生成多个页面。本文将详细介绍如何使用动态路由以及路径加载器文件来生成这些页面,并提供实例代码和解释说明。 动态路由基础 动态路由的核心在于使用带有参数的…...

C#编程语言及.NET 平台快速入门指南
Office Word 不显示 Citavi 插件,如何修复?_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…...
高等代数精解【9】
文章目录 向量空间与矩阵矩阵的行列式矩阵A的秩保持不变方阵的行列式线性无关的条件1. 线性组合为零向量的唯一性2. 矩阵的秩3. 几何解释(对于二维和三维空间)4. 行列式(对于方阵)总结 矩阵的非零子式基础重要性例子注意事项 非奇…...

谷粒商城の缓存篇
文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…...

永远学习:为什么人工智能难以适应新挑战
理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境,正如水适应水瓶。”——中国谚语 “适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特乔治威尔斯 近年来,人工智能取得了长足的进步。所…...
【spring】 Jackson :@JsonIgnore 注解
@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别
现在Maven项目管理,在开发中时比较常用的,在一些项目汇总遇到依赖冲突的问题之后,还是没有能有一个很好的解决办法,这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...
git svn 日记
1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息,包括文件更改情况。 git log:显示 Git 仓库的提交历史。-p:显示每次提交的差异 (diff),也就是文件内容的修改部分。-1:表示只显示最近的一…...

FSMC
RAM ROM RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会自动消失,可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据,种电路结构不需要定时…...

NAT技术+代理服务器+内网穿透
NAT技术 IPv4协议中,会存在IP地址数量不充足的问题,所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的,而公网中的IP地址都是唯一的,所以NAT(Network Address Translation&…...
【ABAP】ole2 excel多sheet导入导出
原理就不分享了 原来是用了动态表格,但是要导出不方便,所以就写死了,excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...
图像配准-小结
图像配准:找到一对图像间的几何变换关系,并且将待配准图像根据几何变换关系对齐到参考图像上,从而为图像融合、变化检测/监测提供基础。图像匹配,在某些语境中可能与上面的图像配准指的是一个东西,而在某些语境中可能指…...

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...