跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Vim 粘贴小问题
未分類
30 5 月 2020

Vim 粘贴小问题

Vim 粘贴小问题

資深大佬 : tesorouo 2

Vim 萌新一枚,想问:我默认 register 已经复制了一个单词,hello 。然后我在一段代码中看到有三个位置要替换成 hello 这个单词,且这三个位置是随机的,没办法用 regex 之类的其他替代操作实现。按照一般的逻辑我肯定是跳到第一个单词,例如这个单词是 Are,我可以在 visual 模式下 viw,然后 p,这样就能替换掉第一个单词,但是诡异的是这个操作以后 vim 的 register 会被替换成 Are (不再是 Hello ),这样我去第二个单词粘贴的时候就粘的不是 hello 了,像这种情景需要怎么解决呢?

另外,从系统剪贴板复制除了用”+y 有没有别的更快的方式?谢谢大家。

大佬有話說 (22)

  • 資深大佬 : MaxTan

    如果是 Linux 下用 fcitx 输入法的,可以用 fcitx 自带的剪贴板功能,ctrl+;

  • 資深大佬 : StrayBugs

    @MaxTan 原来是 fcitx 哈哈哈!一直以为是 KDE 的快捷键还纳闷怎么设置里找不到。

  • 資深大佬 : lniwn

    如果是 Windows10,启用系统的云剪切板之后,使用快捷键 Win + V

  • 資深大佬 : lululau

    找找 vim 的 multiple cursor 插件

  • 資深大佬 : tamlok

    nnoremap 映射

  • 資深大佬 : shawnbluce

    这是 vim 的一个特性,搜索关键词:“vim 寄存器”就明白了。或者看下这个 https://blog.just666.com/2019/01/19/vim-register/

  • 資深大佬 : igaozp

    https://www.kawabangga.com/posts/2668

  • 資深大佬 : itskingname

    不知道你是在哪个环境的 vim 。我用 macOS 上面的,normal 模式可以直接粘贴系统剪贴板。所以我可以直接:%s/Are/粘贴 /g

  • 資深大佬 : lniwn

    另外,从系统剪贴板复制除了用”+y 有没有别的更快的方式?
    > 两种解决方式,①设置快捷键;②设置共享系统剪切板

    ” 复制选中区到系统剪切板中
    vnoremap <leader>y “+y
    ” 共享系统粘贴板
    set clipboard=unnamed

  • 資深大佬 : exiaoxing

    xnoremap p “_dP

  • 資深大佬 : ZhangGu

    我怎么记得有一个:s 的功能呢

  • 資深大佬 : Immortal

    寄存器啊- –
    你可以用 :reg 命令看下寄存器内容

  • 資深大佬 : Lime

    xnoremap p pgvy

  • 資深大佬 : Volekingsg

    :%s/word/newword/gc ?

  • 資深大佬 : Volekingsg

    @Volekingsg #14 https://stackoverflow.com/questions/19994922/find-and-replace-strings-in-vim-on-multiple-lines

  • 資深大佬 : weixiangzhe

    vim 下有 cgn,貌似大部分编辑器里插件是不支持,真用 vim 的可以试试,

    比如这段,替换 xxx 为 yyy
    “`
    xxx dfsdfdsf
    sdfasdfasdf xxx
    dfsdfsdfsd xxx sdfsdf
    “`
    1. 在 xxx 处 normal mode 输入 cgn,xxx 会被删除,
    2. 然后输入 yyy
    3. 搞定后,normal 输入 n
    4, 想要替换为 yyy,normal 下输入 ‘.’ (repeat), 不想替换就输入 n 找一个

  • 資深大佬 : yincrow

    用 sed 语法替换

  • 資深大佬 : woncode

    因为 viw 相当于你先剪切了 Are,此时寄存器的第一个就变成了 Are,不再是原来的 hello

  • 資深大佬 : zhuisui

    我想你需要这个插件 https://github.com/inkarkat/vim-ReplaceWithRegister

  • 資深大佬 : blessingsi

    先#选中词,然后 cw, 输入想要替换的词。之后 n 下一个,.重复操作

  • 資深大佬 : MrUser

    @blessingsi
    感觉 20 正解:先替换一次,然后搜索,用 n/p 切换下一个 /上一个,切到之后用 . 来重复最后一次操作(最后一次是替换)
    亲测完美!

  • 資深大佬 : ilunny

    前一个问题之前也遇到过,看了大家的回复感觉可以通过选择粘贴寄存器历史里的条目解决:
    viw “0p

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具