替换部分匹配字符串的Vim命令
对vim搜索/替换命令比较陌生,不知道如何通过vim命令替换匹配字符串的一部分 如果我有替换部分匹配字符串的Vim命令,vim,Vim,对vim搜索/替换命令比较陌生,不知道如何通过vim命令替换匹配字符串的一部分 如果我有 printf(_UNICODE("Text and %d I want to preserve."), 20); 我希望摆脱Unicode转换,使其成为 printf("Text and %d I want to preserve.", 20); 这意味着去掉了UNICODE(和),但保留了介于两者之间的格式字符串 有人能帮我想出一个vim命令来做这件事,并可能解释一下吗 提前谢谢你!:) 或 匹配“_
printf(_UNICODE("Text and %d I want to preserve."), 20);
我希望摆脱Unicode转换,使其成为
printf("Text and %d I want to preserve.", 20);
这意味着去掉了UNICODE(和)
,但保留了介于两者之间的格式字符串
有人能帮我想出一个vim命令来做这件事,并可能解释一下吗
提前谢谢你!:)
或
匹配“_UNICODE(“+not-a-closing-bracket+”),并仅替换为not-a-closing-bracket部分
(%s执行所有行而不是当前行)尝试此序列
/\u⏎2wdi(2bvt,p
这一个更好⏎如果格式字符串以(
@balki是否有方法将这些应用于文件中的所有事件,如%s…?您可以在宏中录制并运行多次。但与%s不同的是,感谢您的回答。我更喜欢%s
解决方案,但我也对您的解决方案进行了投票。如果格式字符串中的文本包含,则会中断)
1这里是一个寄存器吗?当我在其中键入它时,它用“\1”替换了非收尾括号部分“…我在这里遗漏了什么吗?@user3291342:1应该指正则表达式中第一个(在本例中仅指)和之间的部分bits。我在MacVim和HPUX vi中进行了测试,它对我有效。你确定你准确地复制了字符串吗?@balki:这是一个公平的批评。我假设一个相对已知/简单的用例。它可以修改为将“)作为分隔符,或者使其更复杂,以处理“and”的潜在转义@EdmCoff在我的编辑器vim插件上不起作用,但在实际的vim中起作用。很抱歉造成混淆。
:s/_UNICODE(\([^)]*\))/\1/g
:%s/_UNICODE(\([^)]*\))/\1/g