精通Vim替换艺术:深入探索替换模式的奥秘

🔄 精通Vim替换艺术:深入探索替换模式的奥秘 🎨

Vim,这个源自伯克利的编辑器,以其强大的功能和灵活性在开发者和系统管理员中广受欢迎。在Vim中,替换模式是编辑文本时不可或缺的一部分,它允许我们快速替换单个字符、整行或多行文本。本文将详细介绍如何在Vim中进入替换模式,以及如何使用替换模式进行高效文本编辑。

Vim替换模式简介

在Vim中,替换模式用于替换文本。它是一种命令模式,允许你指定替换的范围和目标。

基本替换命令:

  • :s:substitute:替换命令的基本形式。

Vim中的替换模式

1. 单个字符替换

在普通模式下,按 r 键进入替换模式,然后输入新字符即可替换光标下的字符。

" 在普通模式下,将光标下的字符替换为 'x'
r x

2. 整行替换

在普通模式下,按 : 进入命令模式,然后输入替换命令。

" 将当前行替换为 'Hello, Vim!'
:s/^/Hello, Vim!/

3. 多行替换

使用 :%s 可以替换整个文件中的指定文本。

" 将整个文件中的 'old' 替换为 'new'
:%s/old/new/g

4. 有选择的替换

使用正则表达式和特定的标志来控制替换的范围和条件。

" 仅替换每行中的第一个 'old' 为 'new'
:%s/old/new

高级替换技巧

1. 使用正则表达式

Vim的替换功能支持正则表达式,这为复杂的文本替换提供了可能。

" 替换当前行中所有数字为 'number'
:s/\(\d\+\)/number/g

2. 确认替换

在执行替换时,Vim可以逐个确认每个替换。

" 逐个确认替换 'old' 为 'new'
:%s/old/new/c

3. 跨文件替换

使用 :arg:bufdo 可以跨多个文件执行替换。

" 在当前目录下所有 `.txt` 文件中替换 'old' 为 'new'
:arg *.txt
:bufdo %s/old/new/g | update

4. 使用寄存器

将替换的文本存储在寄存器中,可以在替换时使用。

" 将 a 寄存器的内容替换为当前查找的文本
:let @a='replacement_text
:%s/\<<C-r><a>\>/

5. 替换并保留大小写

使用 \c 标志在替换时忽略大小写。

" 忽略大小写替换 'Old' 为 'new'
:%s/Old/new/gc

6. 替换并保持格式

使用 \& 在替换时保持原有的格式。

" 替换 'old' 为 'new' 并保持原有的格式
:%s/old/new/gc

7. 使用替换计数

限制替换操作的次数。

" 仅替换前 10 个 'old' 为 'new'
:10s/old/new/g

8. 替换并使用回环

使用 \1\2 等在替换中引用匹配的分组。

" 将 '(Word)' 替换为 '\=Word'
:%s/(\(\w\+\)) /\=eval(submatch(1))/g

结论

通过本文的详细介绍和代码示例,你应该已经了解了如何在Vim中进入替换模式,并使用替换模式进行高效的文本编辑。Vim的替换功能非常强大,支持正则表达式、条件替换、跨文件替换等多种高级技巧。掌握这些技巧,可以帮助你在文本编辑中更加得心应手。


注意:本文中的代码示例仅供参考,实际使用中需要根据具体需求进行调整。Vim的替换功能非常灵活,通过不断学习和实践,你将能够更加深入地掌握Vim的强大功能。

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

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

相关文章

Java洗鞋小程序预约系统源码

&#x1f4a5;洗鞋神器来袭&#xff01;轻松预约&#xff0c;让你的鞋子焕然一新&#x1f45f; &#x1f389; 告别洗鞋烦恼&#xff0c;洗鞋预约小程序来啦&#xff01; 你是不是常常为洗鞋而烦恼&#xff1f;手洗太累&#xff0c;送去洗衣店又贵又麻烦。现在&#xff0c;好…

std::enable_if和std::is_base_of

std::enable_if,其主要为了完成模板特偏化&#xff0c;有两个参数&#xff0c;第一个为布尔值类型&#xff0c;第二个如果布尔值为true&#xff0c;其为默认空值&#xff0c;如果已经赋值&#xff0c;则为对应的类型。 std::is_base_of&#xff0c;其一共存在两个参数&#xff…

外汇的基本面分析需要关注什么?

外汇基本面分析的核心在于关注可能影响单一货币供求及国家货币价值的经济、社会和地缘政治事件与趋势。但值得注意的是&#xff0c;这些事件和因素往往具有更广泛的影响力&#xff0c;不仅限于单一国家。它们可能是影响整个地区或国家集团的重要事件&#xff0c;甚至一些事件&a…

使用docker搭建lnmp环境

近期闲来无事&#xff0c;用公司电脑部署了一套环境&#xff0c;记录一下部署经过和踩的坑。 Nginx 1、拉取镜像&#xff0c;需要使用镜像创建容器 拉取的Nginx版本可以自己设&#xff0c;我是用的nginx:latest // 拉取镜像 docker pull nginx:1.18.01.18.0: Pulling from …

差分数组与树上差分

假设我们现在需要维护一段区间&#xff0c;实现对一段区间[L,R]的数的加/减&#xff0c;以及对区间中某个数的查询 最简单的方法把这段区间的数都记录到数组a[N]中&#xff0c;每次修改都对区间[L,R]的每一个数进行加减操作&#xff0c;然后在查询第k个数的时候返回a[k] 在上…

数学建模 —— MATLAB中的矩阵(下)

目录 矩阵的拼接 矩阵的重复 矩阵的重构和重新排列 (1)reshape 函数 (2)sort 函数 (3)sortrows 函数 (4)flip / fliplr / flipud 函数 (5)rot90 函数 矩阵的拼接 有时候我们需要对多个矩阵进行拼接&#xff0c;变成一个大的矩阵。根据矩阵拼接的方向&#xff0c;我们可 …

C++性能优化篇:深拷贝、浅拷贝与移动构造

引言 最近在做性能优化&#xff0c;遇到了一个明显的性能问题&#xff0c;就是在大量数据做深拷贝的时候&#xff0c;程序耗时严重&#xff0c;几乎三分之一的时间都耗在了这里。于是乎仔细看了下此处的代码&#xff0c;发现这些深拷贝完全可以避免。 深拷贝、浅拷贝与移动构…

Java实现RS485串口通信

博客链接地址 近期&#xff0c;我接到了一个任务&#xff0c;将报警器接入到Java项目中&#xff0c;而接入的方式就是通过RS485接入&#xff0c;本人之前可以说是对此毫无所知。不过要感谢现在的互联网&#xff0c;通过网络我查到了我想要知道的一切&#xff0c;这里记录下本次…

对数据分析行业的疑问

我之前是做大数据的开发的&#xff0c;当然也做业务比如Java、springcloud的后端开发、也做了ai的。 但是我一直没怎么做数据分析&#xff0c;当我加入了新公司后发现&#xff0c;现在做大数据的大部分都是数据分析&#xff0c;用python和sql。 我今天一看他们的统计&#xf…

STM32音频应用开发:DMA与定时器的高效协作

摘要: 本文章将深入浅出地介绍如何使用STM32单片机实现音频播放功能。文章将从音频基础知识入手&#xff0c;逐步讲解音频解码、DAC转换、音频放大等关键环节&#xff0c;并结合STM32 HAL库给出具体的代码实现和电路设计方案。最后&#xff0c;我们将通过一个实例演示如何播放W…

NXP RT1060学习总结 - fsl_flexcan CAN FD 函数说明 -1

概要 CAN测试源码&#xff1a; https://download.csdn.net/download/qq_35671135/89425377 根据fsl_flexcan.h文件从文件末尾往前面梳理&#xff0c;总共CAN FD处理函数&#xff1b; 使用的是RT1064开发板进行测试。 1、中止中断驱动的消息接收进程(CAN FD) 函 数 &#xf…

揭示优化Prompt的秘诀:如何让API表现媲美网页版

为什么用GPT API&#xff08;GPT-3.5-turbo&#xff09;进行程序分析时&#xff0c;效果好像比网页版的GPT-3.5差一点&#xff1f;这可能有几个原因&#xff0c;咱们细说一下。 1. Prompt不同 这是最常见的问题之一。API调用时的指令&#xff08;prompt&#xff09;往往比较简…

Ceil()——向上取整函数

函数原型为&#xff1a; double ceil(double x); 大家可以在这个网站里更清晰的了解ceil - C Reference (cplusplus.com) 下面借助一道例题来帮助大家理解&#xff1a;牛牛的快递_牛客题霸_牛客网 (nowcoder.com) 我们分析题得知&#xff0c;在大于1的情况下&#xff0c;只要…

学懂C#编程:常用高级技术——学会Lambda表达式的应用(二)

上一篇介绍了Lambda基础的知识&#xff0c;接着我们通过讲解Lambda的几种应用场景来彻底学懂Lambda在编程中的应用。 Lambda表达式在C#中非常灵活&#xff0c;可以用在多种场合。以下是一些Lambda表达式示例&#xff0c;帮助你更全面地理解其用途&#xff1a; 1. 数组过滤&am…

【ocean】ocnPrin结合getData导出数据

核心就是这一句ocnPrint(?output fout leafValue( getData(“/output” ?result “dc”))) r_list list(4000, 4100, 4200) multi_list list(20,21,22) fout outfile("/home/yourpath/results.txt" "w") foreach(r_value r_listforeach(multi_value …

【Linux基础命令】文件管理命令(二)

文章目录 前言创建删除目录创建目录删除目录cp命令mv命令查看文件内容总结前言 在我们的上一篇文章中,我们介绍了一些基本的Linux文件管理命令,如 cd、ls 等。这些命令对于日常的文件操作任务非常有用。然而,Linux 提供的功能远不止这些。在本文中,我们将继续探索更多的文…

【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解

最终效果 文章目录 最终效果前言存储位置信息存储更多数据存储场景信息持久化存储数据完结 前言 前面写过小型游戏存储功能&#xff1a; 【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解&#xff08;包含数据安全处理方案的加密解密&#xff09; 这次做一…

基于RK3568车载电脑助力日本巴士公司高效完成巴士到站系统项目部署

无处不在的物联网&#xff08;IoT&#xff09;技术已经渗透到了人类生活的各个角落&#xff0c;如日常出行乘坐的公交车上&#xff0c;物联网&#xff08;IoT&#xff09;技术的应用就得到完美诠释&#xff01;其通过公交车上的车载电脑网络与中控室服务器连接来对公交车的运行…

Vue-Ci搭建项目

项目创建 vue-cli 官方提供的一个脚手架,用于快速生成一个vue的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个 骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; 主要的功能 ● 统一的目录结构 ● 本地调试 热部署 ● 单元…

Rust详解日志

详解日志 相比起监控&#xff0c;日志好理解的多&#xff1a;在某个时间点向指定的地方输出一条信息&#xff0c;里面记录着重要性、时间、地点和发生的事件&#xff0c;这就是日志。 注意&#xff0c;本文和 Rust 无关&#xff0c;我们争取从一个中立的角度去介绍何为日志 日…