Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换部分匹配字符串的Vim命令_Vim - Fatal编程技术网

替换部分匹配字符串的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命令来做这件事,并可能解释一下吗 提前谢谢你!:) 或 匹配“_

对vim搜索/替换命令比较陌生,不知道如何通过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