我有以下文字
tset "abc" "123" kk
test "xyz" "345" zz
如何在双配额内替换第二个字符串?所以结果应该是
tset "abc" "replaced" kk
test "xyz" "replaced" zz
答案 0 :(得分:1)
Evil模式解决方案是使用此命令:
:g/".*".*".*"/norm 3f"lct"replaced
这意味着:
g/".*".*".*"
- 包含正则表达式(与两个引用的字符串匹配)的任何行norm
- 正常模式3f"lct"replaced
- 转到第三个"
,向右移动一个字符,然后将文字更改为下一个"
至"替换为" 它还需要范围,因此如果您愿意,可以在行的子集上使用它。
答案 1 :(得分:0)
我假设你想在常规的emacs缓冲区中这样做。
我还假设您希望第二个字符串始终替换为相同的值。
然后,您可以在emacs中使用replace-regexp
命令,如下所示:
M-x replace-regexp <RET> \(tset "[^"]*"\) "[^"]*" <RET> \1 "replaced" <RET>
<RET>
表示键盘上的Enter / Return键。
此命令搜索符合文件中正则表达式的字符串,并将其替换为您想要的任何内容。第一部分设置为一组,括号内的所有内容,您要保留。在替换字符串中表示为\1
。