vi 特殊字符串替换

vi编辑器替换命令:

:%s/s1/s2/    用字符串s2替换每行的第一个字符串s1

:%s/s1/s2/gc   用字符串s2替换每行的所有字符串s1

:n,$s/s1/s2/   用字符串s2替换从n行开始到最后一行,每行的第一个字符串s1

:n,$s/s1/s2/gc   用字符串s2替换从n行开始到最后一行的所有字符串s1

n若为.,则表示从当前行开始到最后一行

:s/s1/s2/    用字符串s2替换当前行的第一个字符串s1

:s/s1/s2/gc   用字符串s2替换当前行的所有字符串s1

s1和s2中的特殊字符需要使用转义符号\,进行转义。

例:

:%s/id=\${map:\$1}/pin=\$1/gc 把文中所有的id=${map:$1}替换成pin=$1,使用的转义字符把特殊字符$进行转义

### vi 编辑器中的批量替换操作 在 `vi` 或 `vim` 编辑器中,可以通过内置的正则表达式功能来执行高效的批量替换操作。以下是具体方法: #### 使用全局替换命令 `%s` 最常用的批量替换方式是通过 `:%s` 命令完成。该命令的基本语法如下: ```bash :%s/旧文本/新文本/g ``` 其中: - `:` 表示进入底行模式(EX Mode)。 - `%` 表示作用于整个文件的所有行。 - `s` 是 substitute 的缩写,表示替换操作。 - `/旧文本/新文本/` 定义了要被替换的内容及其替换成的新内容。 - `g` 表示全局替换,在每行中找到的所有匹配项都会被替换。 如果不想在整个文件范围内进行替换,可以用具体的行号范围代替 `%`。例如,仅替换第 1 到第 10 行的内容: ```bash :1,10s/旧文本/新文本/g ``` 为了更灵活地定义分隔符,可以使用其他字符替代默认的斜杠 `/`。例如,当涉及路径名或其他包含斜杠的字符串时,可以选择 `@` 或 `#` 作为分隔符[^3]: ```bash :%s@旧文本@新文本@g ``` #### 手动逐个替换 除了自动化的全局替换外,还可以手动逐一确认并替换特定的实例。步骤如下: 1. 搜索目标字符串:按下 `/` 键,输入待替换字符串,回车后跳至第一个匹配位置。 2. 替换单词:按 `c` 和 `w` 组合键 (`cw`) 开始修改当前单词为新的内容。 3. 移动到下一个匹配项:按 `n` 跳转到下一处匹配;按 `N` 返回上一处匹配。 4. 确认替换完成后,按 `.` 来重复最近的一次更改动作[^4]。 #### 特殊情况下的处理 对于一些特殊场景,比如去除多余的换行符或者 Windows 风格的回车符 `\r`,可以直接利用以下命令实现清理工作[^2]: ```bash :%s/^V^M//g ``` 需要注意的是,某些情况下可能需要借助外部工具如 `tr` 实现更为复杂的转换逻辑。例如: ```bash tr -d "\r" < src > dest ``` 以上就是在 Vi/Vim 中实施高效批量化文字替换的主要手段之一[^1]。 ### 示例代码 假设有一个文件 content.txt ,其内容如下: ``` apple pie is tasty. banana bread is also good. I like apple and banana both. ``` 我们希望把所有的 “apple” 替换为 “orange”。那么可以在 Vim 中运行下面这条指令: ```bash :%s/apple/orange/g ``` 最终得到的结果将是: ``` orange pie is tasty. banana bread is also good. I like orange and banana both. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值