V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaopenyou
V2EX  ›  Vim

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

  •  
  •   xiaopenyou · 2014-01-25 16:59:36 +08:00 · 5110 次点击
    这是一个创建于 3945 天前的主题,其中的信息可能已经有所发展或是发生改变。
    y复制后,没办法粘贴到:%s里?那怎么操作呢?肯定是有快捷办法的吧?
    10 条回复    1970-01-01 08:00:00 +08:00
    kran
        1
    kran  
       2014-01-25 17:05:34 +08:00   ❤️ 1
    试试在命令模式下按Ctrl-f。
    pright
        2
    pright  
       2014-01-25 18:03:25 +08:00 via Android
    选中要替换的输:再输s,效果就是:'<,'>s//foo/g,不过如果替换字串太长就不好用
    123123
        3
    123123  
       2014-01-25 18:24:41 +08:00
    目前做法是先复制到系统剪贴板,命令中用Shift+Insert粘帖
    wklken
        4
    wklken  
       2014-01-25 18:59:11 +08:00
    :w
    ctrl+z
    sed -i .......可以用‘#’代替‘/’不用转义中间的‘/’
    fg
    :e

    done!
    timothyqiu
        5
    timothyqiu  
       2014-01-26 08:47:54 +08:00   ❤️ 1
    输完 :%s 后按 Ctrl+R "
    582033
        6
    582033  
       2014-01-26 09:01:04 +08:00
    @xiaopenyou 忽然想起来可以用正则替换的嘛, :%s/^foo.*you.*bar$/me/g
    xiaopenyou
        7
    xiaopenyou  
    OP
       2014-01-26 09:37:16 +08:00
    @pright
    @123123
    @wklken
    @timothyqiu
    @582033
    谢谢大家哦!比较还是:%s Ctrl+R "和:'<,'>s//foo/g最快捷
    123123
        8
    123123  
       2014-01-26 10:59:36 +08:00
    Ctrl+R " 挺不错的,学习了
    samuelchen
        9
    samuelchen  
       2014-01-26 13:14:59 +08:00
    :%s/要替换的/替换后的/gc 最后的c加上是逐条确认,不加也可
    chemzqm
        10
    chemzqm  
       2014-01-26 19:26:16 +08:00
    set clipboard='unnamed' 可以让默认粘贴板使用系统粘贴板而不是vim的无名粘贴板。
    不过我通常做法是用vf[末尾字符]然后几个分号,然后c改为需要的结果,然后n和.或者N和,需要全局大量替换采用:%s,因为这个命令要考虑转义的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5316 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:12 · PVG 15:12 · LAX 23:12 · JFK 02:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.