vi 删除或编辑引号中的内容
在 Vim/Neovim 里,有很多比 Shift+D 再手动补 " 高效得多的方法来删除或替换双引号里面的内容。下面按实用程度排序,推荐你日常用的几个:
1. 最推荐:用 ci" 或 di"(改/删)+ ca" 或 da"(改/删包括引号本身)
| 命令 | 含义 | 例子(光标在引号内任意位置) |
ci" | change inside " | 删除""里面的内容,进入插入模式 |
di" | delete inside " | 只删除""里面的内容,保持"" |
ca" | change around " | 删除""及里面的内容,进入插入模式(相当于删整对引号) |
da" | delete around " | 只删除整对引号,内容也一起删 |
实际操作举例:
"hello world" ← 光标在 hello 任意位置
- 按
ci" → 直接变成 "|"(光标在两个引号中间,进入插入模式),你直接敲新内容就行
- 按
di" → 直接变成 ""(光标在两个引号中间,普通模式)
- 按
ca" → 直接变成 |(连引号都没了,进入插入模式)
99% 的情况下 "" 场景,这三个命令就够了,比你原来的 Shift+D 再补 " 快十倍。
2. 更暴力的可视模式(适合内容很长,一眼就看得到)
光标在引号内任意位置:
vi" → 选中引号里面的内容被高亮选中 → 直接 d 删除,或者 c 改成插入模式
va" 选中包括引号本身 → d 或 c
3. 用 surround 插件(vim-surround / vim-sandwich)
如果你装了 nvim-surround 或 vim-sandwich,操作更爽:
| 命令 | 效果 |
cs"' | 把 "" 改成 ''(change surround) |
cs"<em> | 把 "" 改成 <em></em> |
ds" | 删除周围的 "" |
| 在可视模式下 S" | 给选中的内容加 "" |
4. 一行命令(不离开正常模式)
如果你就是想一次性替换掉所有 "" 里的内容为某个固定字符串:
:%s/"\zs.*\ze"/新内容/g
例子:把所有双引号里的内容都改成 abc
:%s/"\zs.*\ze"/abc/g
5. 总结最常用的三种操作
| 你想干的事 | 最快按键(光标在引号内任意位置) |
| 删除内容,保留 "" | di" |
| 删除内容并立刻输入新的 | ci" |
| 删除整对引号+内容 | da" 或 ca" |
| 只改引号类型("" → '') | cs"'(需要surround插件) |
把 ci" 和 di" 练熟以后,你再也不想用 Shift+D 了,真的快到飞起。
有单引号、反引号、括号的需求也一样,把 " 换成对应的 '、`、)、}、] 就行,Vim 都支持。