我想用vim的搜索和替换替换所有的“with”,反之亦然。有没有办法一步到位呢?我在想这样的事情:vim中的条件替换
:s/\("\|'\)/\1=="?':"/
其中当然\1=="?':"
-part是什么,在vim工程提前
感谢
我想用vim的搜索和替换替换所有的“with”,反之亦然。有没有办法一步到位呢?我在想这样的事情:vim中的条件替换
:s/\("\|'\)/\1=="?':"/
其中当然\1=="?':"
-part是什么,在vim工程提前
感谢
这是一个案例:help sub-replace-special
:
:s/["']/\=submatch(0) == '"' ? "'" : '"'/g
这个匹配的两个引号(以更简单的方式与[...]
),然后使用三元运算符把每个引号走向反面。 (对于更复杂的情况,可以使用字典查找。)
另一种方法(更适合于脚本)是使用内置的tr()
函数。要应用它的缓冲区,getline()
/setline()
用于:
:call setline('.', tr(getline('.'), "'\"", "\"'"))
你可以这样做很容易地通过使用abolish.vim插件。
Abolish.vim有一个:Subvert
命令,它为您提供了一种在自己的小DSL中搜索和替换的不同方法。
:%S/{\",'}/{',\"}/g
什么是'\“'的转义;这非常不直观?!(当我删除它时,我得到一个'E64'。 –
功率的Unix工具;)
:%!tr "'\"" "\"'"
不错的一个!非常感谢你! – Vince
在替换表达式中是否可以使用匹配的模式'\ 1','\ 2',...?我尝试过,但反斜杠是从字面上插入的。 –
@EnricoMariaDeAngelis:是的,通过'submatch(1)'等;文字'1'在这里不起作用。 –