Vim 粘贴小问题

2020-05-28 09:21:35 +08:00
 tesorouo

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

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

3614 次点击
所在节点    Vim
22 条回复
MaxTan
2020-05-28 09:28:20 +08:00
如果是 Linux 下用 fcitx 输入法的,可以用 fcitx 自带的剪贴板功能,ctrl+;
StrayBugs
2020-05-28 09:31:43 +08:00
@MaxTan 原来是 fcitx 哈哈哈!一直以为是 KDE 的快捷键还纳闷怎么设置里找不到。
lniwn
2020-05-28 09:34:38 +08:00
如果是 Windows10,启用系统的云剪切板之后,使用快捷键 Win + V
lululau
2020-05-28 09:34:39 +08:00
找找 vim 的 multiple cursor 插件
tamlok
2020-05-28 09:36:15 +08:00
nnoremap 映射
shawnbluce
2020-05-28 09:36:59 +08:00
这是 vim 的一个特性,搜索关键词:“vim 寄存器”就明白了。或者看下这个 https://blog.just666.com/2019/01/19/vim-register/
igaozp
2020-05-28 09:38:47 +08:00
itskingname
2020-05-28 09:42:35 +08:00
不知道你是在哪个环境的 vim 。我用 macOS 上面的,normal 模式可以直接粘贴系统剪贴板。所以我可以直接:%s/Are/粘贴 /g
lniwn
2020-05-28 09:48:10 +08:00
另外,从系统剪贴板复制除了用"+y 有没有别的更快的方式?
> 两种解决方式,①设置快捷键;②设置共享系统剪切板

" 复制选中区到系统剪切板中
vnoremap <leader>y "+y
" 共享系统粘贴板
set clipboard=unnamed
exiaoxing
2020-05-28 10:13:24 +08:00
xnoremap p "_dP
ZhangGu
2020-05-28 10:15:37 +08:00
我怎么记得有一个:s 的功能呢
Immortal
2020-05-28 10:18:33 +08:00
寄存器啊- -
你可以用 :reg 命令看下寄存器内容
Lime
2020-05-28 10:24:31 +08:00
xnoremap p pgvy
Volekingsg
2020-05-28 10:44:46 +08:00
:%s/word/newword/gc ?
Volekingsg
2020-05-28 10:45:18 +08:00
weixiangzhe
2020-05-28 10:51:56 +08:00
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
2020-05-28 13:12:11 +08:00
用 sed 语法替换
woncode
2020-05-28 13:26:44 +08:00
因为 viw 相当于你先剪切了 Are,此时寄存器的第一个就变成了 Are,不再是原来的 hello
zhuisui
2020-05-28 13:33:25 +08:00
blessingsi
2020-05-28 20:33:28 +08:00
先#选中词,然后 cw, 输入想要替换的词。之后 n 下一个,.重复操作

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

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

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

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

© 2021 V2EX