我喜欢使用vim搜索和替换来替换所有"用'反之亦然。有没有办法一步到位?我想到这样的事情:
:s/\("\|'\)/\1=="?':"/
当然\1=="?':"
- 部分在vim中起作用。
提前致谢!
答案 0 :(得分:14)
这是:help sub-replace-special
:
:s/["']/\=submatch(0) == '"' ? "'" : '"'/g
这匹配两个引号中的任何一个(以[...]
更简单的方式),然后使用三元运算符将每个引号转换为相反的引号。 (对于更复杂的情况,您可以使用字典查找。)
答案 1 :(得分:3)
另一种方法(更适合编写脚本)是使用内置的tr()
函数。要将其应用于缓冲区,请使用getline()
/ setline()
:
:call setline('.', tr(getline('.'), "'\"", "\"'"))
答案 2 :(得分:3)
unix工具的强大功能;)
:%!tr "'\"" "\"'"
答案 3 :(得分:2)
您可以使用abolish.vim插件轻松完成此操作。
Abolish.vim 有一个:Subvert
命令,它为您提供了一种不同的方法来搜索和替换自己的小DSL。
:%S/{\",'}/{',\"}/g
答案 4 :(得分:0)
可能是最懒/最简单的方式:
:%s/'/__/g | %s/"/'/g | %s/__/"/g
三个基本步骤合并为一行:
'
转换为__
(或随机的内容)"
转换为'
__
转换为"
然后将它们与|
符号组合。
我确信某些vim向导会有更好的解决方案,但这对我有用。