Vim 如何快速粘贴多次

2020-10-12 11:29:45 +08:00
 tesorouo

例如我们有如下代码:

def cool():
    var_1 = "long long long long long string"
    var_2 = "long long and long long long string"

单纯考虑复制粘贴不用替换,我已经 yank 了单词 short,要粘贴替换掉随机几个 long 。

如果我光标移动到第一个要替换的 long,高亮粘贴以后再去粘贴别的地方默认粘贴出来的就会是 long 而非一开始复制的 short,虽然"0p 可以粘贴出 short 但是真的很麻烦,有什么正确的粘贴方式是可以保持寄存器依然储存 short 而非替换成 long 的吗?

2018 次点击
所在节点    问与答
10 条回复
tachikomachann
2020-10-12 11:43:34 +08:00
vimrc 里面加这个配置

xnoremap p pgvy " 粘贴时不置换剪贴板
tamlok
2020-10-12 11:55:23 +08:00
可以把要粘贴的东西复制到系统剪切板 "+y
jdhao
2020-10-12 13:23:23 +08:00
定义一个 mapping,xnoremap <leader>p "0p
jiezhi
2020-10-12 13:32:08 +08:00
默认用的是匿名寄存器吧,可以把内容复制到指定寄存器的
SiliusMo
2020-10-12 14:15:32 +08:00
换个思路。

1. /long 查找 long
2. cw short <esc> 替换 long 为 short
3. n 寻找下一个目标
4. . 重复替换
jdhao
2020-10-12 14:46:04 +08:00
@SiliusMo 或者,1,直接搜索 /long
2,cgn,然后输入 short
3,重复按 .,所有 long 都会被替换为 short
jdhao
2020-10-12 14:46:51 +08:00
@jdhao 第二步输入完 short,要退出 insert 模式
jdhao
2020-10-12 14:48:53 +08:00
或者干脆在命令行使用 %s/long/short/gc,这样也很快速替换自己想替换的 pattern
dullwit
2020-10-12 14:55:08 +08:00
@SiliusMo #5
@jdhao #6 %s/long/short/gc,用 c 标识位不需要手动寻找下一个目标
DCCooper
2020-10-12 18:08:47 +08:00
@SiliusMo #5 只适用于被替换目标唯一的情况吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/714109

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX