当前位置: 首页 > news >正文

Linux中的Vim文本编辑器

Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。

一、基本操作

  1. 启动Vim

    • vim:直接启动Vim编辑器。
    • vim filename:打开或创建文件并启动Vim进行编辑。
  2. 模式切换

    • Vim有三种主要模式:正常模式(Normal Mode)、插入模式(Insert Mode)和命令行模式(Command-line Mode)。

      • 正常模式:默认模式,用于执行大多数命令。
      • 插入模式:用于输入文本。
      • 命令行模式:用于执行保存、退出等命令。
    • 切换模式:

      • 从正常模式到插入模式:i(在当前位置插入)、I(在当前行首插入)、a(在当前位置后插入)、A(在当前行尾插入)、o(在当前行下新开一行插入)等。
      • 从插入模式到正常模式:按Esc键。

二、编辑命令

  1. 复制和粘贴

    • 复制:yy(复制当前行)、y$(复制至行尾)、yw(复制一个单词)、yG(复制到文件末尾)等。
    • 粘贴:p(在光标后粘贴)、P(在光标前粘贴)。
  2. 删除

    • x:删除当前字符。
    • X:删除前一个字符(等价于dh)。
    • dd:删除当前行。
    • Dd$:删除从当前光标位置到行尾的所有字符。
    • dw:删除一个单词。
  3. 撤销和重做

    • u:撤销上一次操作。
    • Ctrl + r:重做上一次撤销的操作。

三、移动光标

  1. 基本移动

    • h:左移一个字符。
    • j:下移一行。
    • k:上移一行。
    • l:右移一个字符。
  2. 单词间移动

    • w:向前移动到下一个单词的开头。
    • e:向前移动到下一个单词的末尾。
    • b:向后移动到上一个单词的开头。
  3. 行内移动

    • 0(数字零):移动到行首。
    • ^:移动到行首的第一个非空白字符。
    • $:移动到行尾。
  4. 页面移动

    • Ctrl + f:向下滚动一页。
    • Ctrl + b:向上滚动一页。
    • Ctrl + d:向下滚动半页。
    • Ctrl + u:向上滚动半页。
  5. 文件内移动

    • gg:移动到文件的第一行。
    • G:移动到文件的最后一行。
    • :n(n为行号):移动到文件的第n行。

四、查找和替换

  1. 查找

    • /text:向前查找text。
    • ?text:向后查找text。
    • n:查找下一个匹配项。
    • N:查找上一个匹配项。
  2. 替换

    • :s/old/new/:将当前行的第一个old替换为new。
    • :s/old/new/g:将当前行的所有old替换为new。
    • :%s/old/new/g:将文件中的所有old替换为new。

五、保存和退出

  1. 保存

    • :w:保存当前文件。
    • :w filename:将当前文件另存为filename。
  2. 退出

    • :q:如果文件未修改,则退出Vim。
    • :q!:强制退出Vim,不保存任何修改。
    • :wqZZ:保存并退出Vim。

六、其他常用命令

  1. 分屏操作

    • :split:sp:水平分割窗口。
    • :vsplit:vsp:垂直分割窗口。
    • Ctrl + w + w:在分屏间切换。
  2. 设置

    • :set nu:显示行号。
    • :set nonu:不显示行号。
    • :set hlsearch:高亮显示搜索结果。
    • :set nohlsearch:关闭高亮显示。
  3. 录制宏

    • qa:开始录制宏a。
    • …(执行一系列命令)
    • q:结束录制。
    • @a:执行宏a。
  4. 执行外部命令

    • :!command:在Vim中执行外部命令。

七、高级技巧

  1. 多文件编辑

    • vim file1 file2:同时打开多个文件。
    • :next:n:切换到下一个文件。
    • :prev:p:切换到上一个文件。
    • :first:切换到第一个文件。
    • :last:切换到最后一个文件。
  2. 文本对象操作

    • Vim支持多种文本对象,如iw(内部单词)、aw(一个单词)、ip(内部段落)等,可以与删除、复制等命令结合使用。
  3. 可视模式

    • 在正常模式下,按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 属性&#xff…...

c# c++程序 交互

目录 一、两种不同程序写的进程交互 1、定义交互消息 2、定义C进程发来的消息ID 3、定义C进程交互的句柄 及给C进程发送的消息ID 4、定义交互消息所需的数据类型 5、引入所需的系统函数 6、给主进程发消息 7、写入本进程主窗口句柄 8、处理发来的交互消息 一、两种不…...

解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题

一、场景重现 使用rouyi框架时&#xff0c;可以看到很多分页查询&#xff0c;如&#xff1a; //-----------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数据的详细指南

在数据分析中&#xff0c;Excel文件是一种常见的数据存储格式。使用Python读取Excel数据可以帮助我们更方便地进行数据处理和分析。本文将介绍如何在Python 2和Python 3中读取Excel数据&#xff0c;具体步骤和代码示例详细说明。 准备工作 在开始之前&#xff0c;请确保你已经…...

VitePress 动态路由与路径加载器详解

在使用 VitePress 构建静态网站时&#xff0c;动态路由功能允许我们通过单个 Markdown 文件和动态数据生成多个页面。本文将详细介绍如何使用动态路由以及路径加载器文件来生成这些页面&#xff0c;并提供实例代码和解释说明。 动态路由基础 动态路由的核心在于使用带有参数的…...

C#编程语言及.NET 平台快速入门指南

Office Word 不显示 Citavi 插件&#xff0c;如何修复&#xff1f;_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. 几何解释&#xff08;对于二维和三维空间&#xff09;4. 行列式&#xff08;对于方阵&#xff09;总结 矩阵的非零子式基础重要性例子注意事项 非奇…...

谷粒商城の缓存篇

文章目录 前言一、本地缓存和分布式缓存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.…...

永远学习:为什么人工智能难以适应新挑战

理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境&#xff0c;正如水适应水瓶。”——中国谚语 “适应或灭亡&#xff0c;现在和以往一样&#xff0c;是大自然的必然法则。”——赫伯特乔治威尔斯 近年来&#xff0c;人工智能取得了长足的进步。所…...

【spring】 Jackson :@JsonIgnore 注解

@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别

现在Maven项目管理&#xff0c;在开发中时比较常用的&#xff0c;在一些项目汇总遇到依赖冲突的问题之后&#xff0c;还是没有能有一个很好的解决办法&#xff0c;这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...

git svn 日记

1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息&#xff0c;包括文件更改情况。 git log&#xff1a;显示 Git 仓库的提交历史。-p&#xff1a;显示每次提交的差异 (diff)&#xff0c;也就是文件内容的修改部分。-1&#xff1a;表示只显示最近的一…...

FSMC

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

NAT技术+代理服务器+内网穿透

NAT技术 IPv4协议中&#xff0c;会存在IP地址数量不充足的问题&#xff0c;所以不同的子网中会存在相同IP地址的主机。那么就可以理解为私有网络的IP地址并不是唯一对应的&#xff0c;而公网中的IP地址都是唯一的&#xff0c;所以NAT&#xff08;Network Address Translation&…...

【ABAP】ole2 excel多sheet导入导出

原理就不分享了 原来是用了动态表格&#xff0c;但是要导出不方便&#xff0c;所以就写死了&#xff0c;excel多sheet导入的类放在另一篇文章里 REPORT zcdemo17. INCLUDE ole2incl.DATA: excel TYPE ole2_object,workbooks TYPE ole2_object,workbook TYPE ole2_object…...

图像配准-小结

图像配准&#xff1a;找到一对图像间的几何变换关系&#xff0c;并且将待配准图像根据几何变换关系对齐到参考图像上&#xff0c;从而为图像融合、变化检测/监测提供基础。图像匹配&#xff0c;在某些语境中可能与上面的图像配准指的是一个东西&#xff0c;而在某些语境中可能指…...

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...