[实践OK]vim中只想删光标字母并写个一个字符替换的最快捷方式是?改整个 IP(重点)。改变量 / 域名(最常用)

jack 2026-3-18 14:49 | |
在 Vim 里,你这个需求本质是:**“删除当前字符并立即输入一个新字符”**,最短路径如下:

---

### ✅ 最快:`r`

```vim
rX
```

👉 含义:

* `r` = replace(替换当前光标所在字符)
* `X` = 你要替换成的字符

---

### 🎯 示例

光标在 `a` 上:

```text
cat
^
```

输入:

```vim
rb
```

结果:

```text
cbt
^
```

---

### ⚡ 为什么这是最快的

* 不进入插入模式(比 `x + i` 少一步)
* 不移动光标
* 单指令完成替换

---

### 🚫 常见但更慢的写法

| 写法      | 问题                                |
| ------- | --------------------------------- |
| `x i X` | 多一步进入插入模式                         |
| `sX`    | 会进入 insert mode(适合连续输入,但不适合单字符替换) |

---

### 📌 补充(进阶)

* `R`:进入**连续替换模式**(类似覆盖写)
* `cw`:替换一个单词(不是单字符)

---

如果你平时在做类似“批量改配置 / 改IP / 改域名”的活,我可以给你一套 Vim 高频操作组合(非常适合你现在做 Ansible / 运维场景)。



```
如果你平时在做类似“批量改配置 / 改IP / 改域名”的活,我可以给你一套 Vim 高频操作组合(非常适合你现在做 Ansible / 运维场景)。
```

好,这类“改配置 / 改 IP / 改域名”的场景,本质是**高频重复编辑 + 模式化替换**,在 Vim 里可以做到非常高效。下面给你一套**实战型组合拳**(偏运维 / Ansible 场景):

---

# 一、全局替换(最核心)

### ✅ 批量改 IP / 域名

```vim
:%s/10\.75\.17\.15/10.75.17.25/g
```

👉 要点:

* `%` = 全文件
* `g` = 一行中全部替换
* `.` 必须转义

---

### ✅ 带确认(防误伤)

```vim
:%s/src\.old\.com/src.new.com/gc
```

👉 每次替换前确认(y/n/a/q)

---

### ✅ 只替换匹配行

```vim
:g/nginx/s/80/8080/g
```

👉 只在包含 `nginx` 的行里替换端口

---

# 二、可视块批量改(改多行同一列)

👉 运维改配置神器(比如改一列 IP)

### 操作步骤:

```text
Ctrl + v      # 进入块模式
选中多行列
Shift + i     # 插入
输入内容
Esc           # 批量生效
```

---

### 🎯 示例

批量在行首加 `#`:

```text
server1
server2
server3
```

操作后:

```text
#server1
#server2
#server3
```

---

# 三、宏(解决重复操作)

👉 适合“结构一样但不能纯替换”的场景

### 录制宏:

```vim
qa        # 录制到寄存器 a
...操作...
q         # 结束
```

### 执行:

```vim
@a        # 执行一次
10@a      # 执行10次
```

---

### 🎯 示例(改 hosts 格式)

```
10.1.1.1 test1
10.1.1.2 test2
```

改成:

```
test1 ansible_host=10.1.1.1
```

👉 用宏比手动快 10 倍

---

# 四、正则增强(精准匹配)

### ✅ 匹配 IP

```vim
:%s/\v\d+\.\d+\.\d+\.\d+/REPLACED/g
```

---

### ✅ 交换 IP 和主机名

```vim
:%s/\v(\S+)\s+(\S+)/\2 ansible_host=\1/
```

👉 非常适合你做 Ansible inventory

---

# 五、多文件批量处理(运维高频)

### ✅ 打开多个文件

```bash
vim *.ini
```

### ✅ 批量执行替换

```vim
:argdo %s/old/new/ge | update
```

👉 含义:

* `argdo`:对所有文件执行
* `e`:忽略错误
* `update`:有修改才保存

---

# 六、快速改“当前词”(最常用)

### ✅ 改当前单词

```vim
ciw
```

👉 删除当前词并进入插入模式

---

### ✅ 全文替换当前词

```vim
:%s/<C-r><C-w>/new/g
```

👉 `<C-r><C-w>` = 当前光标单词

---

# 七、跳转 + 修改(提速关键)

### ✅ 快速跳到下一个并改

```vim
n + .
```

👉 含义:

* `n`:下一个匹配
* `.`:重复上次修改

---

### 🎯 场景

1. `/8080` 搜索
2. `r9` 改成 9090
3. `n . n . n .`

👉 秒级批量修改

---

# 八、删除 IP(你之前那个问题的正解)

```vim
diW
```

👉 删除整个“WORD”(含点号的 IP)

---

# 总结(给你一个运维优先级)

最值得掌握的 5 个:

1. `:%s///g` —— 全局替换
2. `Ctrl+v` —— 块编辑
3. `ciw` —— 改单词
4. `.` —— 重复操作
5. `:argdo` —— 多文件处理

---

如果你愿意,我可以**专门给你定制一套:Ansible / inventory / nginx / hosts 文件的 Vim 快速编辑模板**,直接贴你现在的文件结构,我帮你把操作路径优化到“最少按键数”。


```
专门给你定制一套:Ansible / inventory / nginx / hosts 文件的 Vim 快速编辑模板,我只是修改单个文件时间较多,想最少步骤实现vim操作文件罢了。
```

明白,你的目标不是“炫技”,而是**单文件场景下最少按键数完成修改**。那我给你一套**极简操作模型(偏运维高频场景)**,只保留真正有用的。

基于 Vim,下面这些就是“效率上限组合”。

---

# 一、核心原则(先建立思维模型)

你所有操作可以压缩成 3 类:

1. **就地改**(不移动光标)
2. **跳一下 + 改**
3. **一次改 + 无限复用(.)**

---

# 二、最少按键的“就地修改”

### ✅ 改一个字符(你刚问的)

```vim
rX
```

---

### ✅ 改整个 IP(重点)

```vim
ciW
```

👉 比 `diW + i` 少一步

---

### ✅ 改变量 / 域名(最常用)

```vim
ciw
```

👉 例如:

```
server_name old.com;
```

光标在 `old.com` → `ciw new.com`

---

### ✅ 改到行尾(改 nginx 特别多)

```vim
C
```

👉 等价于 `c$`

---

### ✅ 改引号/括号内内容(高级但高频)

```vim
ci"
ci'
ci)
ci]
```

👉 例如:

```nginx
proxy_pass "http://old";
```

光标在里面 → `ci"` → 输入新地址

---

# 三、跳一下 + 改(比全局替换更快的场景)

### ✅ 改下一个匹配(极高频)

```vim
/old
```

然后:

```vim
n + .
```

---

### 🎯 实战(改多个 IP)

1. `/10.75`
2. `ciW 10.52.14.86`
3. 然后:

```vim
n . n . n .
```

👉 比 `:%s` 更安全(避免误伤)

---

# 四、可控替换(比宏更轻量)

### ✅ 当前词全局替换(极推荐)

```vim
:%s/<C-r><C-w>/new/g
```

👉 你只需要:

* 光标放在旧词上
* 一条命令搞定

---

# 五、删除类(你之前问过的延伸)

### ✅ 删除 IP(最优)

```vim
diW
```

---

### ✅ 删除等号右边(配置文件神器)

```vim
d$
```

---

### ✅ 删除到某字符

```vim
dt=
```

👉 删除到 `=` 前(不包含)

---

# 六、重复操作 = 效率核心

### ✅ 万能键

```vim
.
```

👉 规则:

> 你只需要“认真做一次”,剩下全靠 `.`

---

### 🎯 示例(改多行端口)

第一行:

```vim
ciw 8080
```

后面:

```vim
j . j . j .
```

---

# 七、你这个场景最优“组合拳”(总结版)

### 👉 改 IP

```vim
ciW + .
```

---

### 👉 改域名

```vim
ciw + .
```

---

### 👉 改整行配置

```vim
C
```

---

### 👉 改多个但不想误伤

```vim
/xxx → n → 修改 → n .
```

---

### 👉 批量但精准

```vim
:%s/old/new/gc
```

---

# 八、给你一个“运维最短路径口诀”

> **能 `ciw` 就别 `x+i`
> 能 `.` 就别重复敲
> 能 `/ + n` 就别手找
> 能 `ci"` 就别删整行**

---

如果你再往上走一步(进阶优化),可以给你做两件事:

1. **定制 `.vimrc`(专门适配你这种运维编辑习惯)**
2. **把常用操作压缩成 1~2 个快捷键(比如一键改 IP)**

你可以把你现在常改的 nginx / inventory / hosts 文件贴一段,我可以帮你把操作路径再压缩一半。

作者:jack@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://www.jackxiang.com/post/13310/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]