xiaopenyou
V2EX  ›  Vim

在vim中,想批量替换一大串字符,怎么操作便捷?

  •  
  •   xiaopenyou · Jan 25, 2014 · 5962 views
    This topic created in 4506 days ago, the information mentioned may be changed or developed.
    y复制后,没办法粘贴到:%s里?那怎么操作呢?肯定是有快捷办法的吧?
    10 replies    1970-01-01 08:00:00 +08:00
    kran
        1
    kran  
       Jan 25, 2014   ❤️ 1
    试试在命令模式下按Ctrl-f。
    pright
        2
    pright  
       Jan 25, 2014 via Android
    选中要替换的输:再输s,效果就是:'<,'>s//foo/g,不过如果替换字串太长就不好用
    123123
        3
    123123  
       Jan 25, 2014
    目前做法是先复制到系统剪贴板,命令中用Shift+Insert粘帖
    wklken
        4
    wklken  
       Jan 25, 2014
    :w
    ctrl+z
    sed -i .......可以用‘#’代替‘/’不用转义中间的‘/’
    fg
    :e

    done!
    timothyqiu
        5
    timothyqiu  
       Jan 26, 2014   ❤️ 1
    输完 :%s 后按 Ctrl+R "
    582033
        6
    582033  
       Jan 26, 2014
    @xiaopenyou 忽然想起来可以用正则替换的嘛, :%s/^foo.*you.*bar$/me/g
    xiaopenyou
        7
    xiaopenyou  
    OP
       Jan 26, 2014
    @pright
    @123123
    @wklken
    @timothyqiu
    @582033
    谢谢大家哦!比较还是:%s Ctrl+R "和:'<,'>s//foo/g最快捷
    123123
        8
    123123  
       Jan 26, 2014
    Ctrl+R " 挺不错的,学习了
    samuelchen
        9
    samuelchen  
       Jan 26, 2014
    :%s/要替换的/替换后的/gc 最后的c加上是逐条确认,不加也可
    chemzqm
        10
    chemzqm  
       Jan 26, 2014
    set clipboard='unnamed' 可以让默认粘贴板使用系统粘贴板而不是vim的无名粘贴板。
    不过我通常做法是用vf[末尾字符]然后几个分号,然后c改为需要的结果,然后n和.或者N和,需要全局大量替换采用:%s,因为这个命令要考虑转义的问题。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5367 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 09:05 · PVG 17:05 · LAX 02:05 · JFK 05:05
    ♥ Do have faith in what you're doing.