首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Vim中免除所选字符的替换

如何在Vim中免除所选字符的替换
EN

Stack Overflow用户
提问于 2019-11-03 05:49:07
回答 5查看 91关注 0票数 1

我有一条短信:

代码语言:javascript
复制
"1-1-1"
"1-1-2"
"1-1-3"
"1-2-1"
"1-2-2"
"1-2-3"
"1-3-1"
"1-3-2"
"1-3-3"

我想在第二个连字符之后的每一行插入0,将"1-1-1"转换为"1-1-01"

我试着用:%s/-\d"/-0\d/代替,但这把1-1-1变成了1-1-0d

如何在不改变周围文字的情况下插入一个符号?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-11-03 05:53:16

尝试以下替换:

代码语言:javascript
复制
:%s/-\(\d+\)"$/-0\1"/

Demo

这里的想法是匹配并捕获\1中的最后一个数字,然后使用该捕获组构建替换,其中前缀为零。

票数 0
EN

Stack Overflow用户

发布于 2019-11-04 13:37:53

我只想在戒指里加入一个不同的特征,因为我觉得它很独特。Vim正则表达式有两个零宽度原子来指定文本的开始(\zs)和结束(\ze),这两个原子被认为是匹配的。您可以以有趣的方式使用它们,例如:

代码语言:javascript
复制
:%s/-\zs\ze\d"/0/

它告诉vim如果其余的正则表达式匹配,则将\zs\ze之间的文本替换为0 (这里正好是空的)。

或者,只使用\ze

代码语言:javascript
复制
:%s/-\ze\d"/-0/

当原始的-后面跟着一个数字和一个双引号时,它告诉vim用-0代替-

有关更多信息,请参见:help \zs:help \ze

票数 1
EN

Stack Overflow用户

发布于 2019-11-03 06:09:46

从正常模式开始,您可以将光标放在第一行的最后一个连字符上,然后使用:

代码语言:javascript
复制
<c-v>GA0<esc>

解释:

  • <c-v>:Ctrl+v输入块-视觉mode
  • G:将可视选择扩展到file
  • A0:的末尾,进入插入模式,并将0
  • <esc>:Escape插入模式

关于:help v_b_A的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58677733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档