![VIM-如何使用 leader 搜索和替换多个字符串?](https://linux22.com/image/1404061/VIM-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20leader%20%E6%90%9C%E7%B4%A2%E5%92%8C%E6%9B%BF%E6%8D%A2%E5%A4%9A%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%9F.png)
我想创建一个领导者快捷方式,用于在当前缓冲区中进行多个全局搜索和替换。
例如,按下 leader 然后按“fq”,我希望它在全球范围内搜索和替换 3 次,替换:
- “a” 和 “b”
- “c” 替换为 “d”
- “e” 替换为 “f”
我已经阅读了它的帮助并且认为我已经接近了,但是这不起作用(似乎只进行第一次搜索):
map <leader>fq :%s/a/b/ge | %s/c/d/ge | %s/e/f/ge<CR>
答案1
命令分隔符|
的优先级高于:map
参数,因此您可以有效地执行此操作:
:map <leader>fq :%s/a/b/ge
:%s/c/d/ge | %s/e/f/ge<CR>
你需要逃脱字符,或者在定义映射时|
最好使用特殊的键符号:<Bar>
:map <leader>fq :%s/a/b/ge <Bar> %s/c/d/ge <Bar> %s/e/f/ge<CR>
附言:你应该使用:noremap
;它使映射不受重新映射和递归的影响。