tesorouo
V2EX  ›  问与答

Vim 如何快速粘贴多次

  •  
  •   tesorouo · Oct 12, 2020 · 3064 views
    This topic created in 2218 days ago, the information mentioned may be changed or developed.

    例如我们有如下代码:

    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 的吗?

    10 replies  •  2020-10-12 18:08:47 +08:00
    tachikomachann
    tachikomachann
    Oct 12, 2020 via Android❤️1
    1
    vimrc 里面加这个配置

    xnoremap p pgvy " 粘贴时不置换剪贴板
    tamlok
    tamlok
    Oct 12, 2020 via Android❤️1
    2
    可以把要粘贴的东西复制到系统剪切板 "+y
    jdhao
    jdhao
    Oct 12, 2020 via Android❤️1
    3
    定义一个 mapping,xnoremap <leader>p "0p
    jiezhi
    jiezhi
    Oct 12, 2020❤️1
    4
    默认用的是匿名寄存器吧,可以把内容复制到指定寄存器的
    SiliusMo
    SiliusMo
    Oct 12, 2020❤️1
    5
    换个思路。

    1. /long 查找 long
    2. cw short <esc> 替换 long 为 short
    3. n 寻找下一个目标
    4. . 重复替换
    jdhao
    jdhao
    Oct 12, 2020 via Android❤️1
    6
    @SiliusMo 或者,1,直接搜索 /long
    2,cgn,然后输入 short
    3,重复按 .,所有 long 都会被替换为 short
    jdhao
    jdhao
    Oct 12, 2020 via Android
    7
    @jdhao 第二步输入完 short,要退出 insert 模式
    jdhao
    jdhao
    Oct 12, 2020 via Android
    8
    或者干脆在命令行使用 %s/long/short/gc,这样也很快速替换自己想替换的 pattern
    dullwit
    dullwit
    Oct 12, 2020
    9
    @SiliusMo #5
    @jdhao #6 %s/long/short/gc,用 c 标识位不需要手动寻找下一个目标
    DCCooper
    DCCooper
    Oct 12, 2020 via iPhone
    10
    @SiliusMo #5 只适用于被替换目标唯一的情况吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   529 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    ♥ Do have faith in what you're doing.