vim复制粘贴问题

  • A+
所属分类:工具使用

在vim中使用y复制的内容并不会存储在系统粘贴板中,而是存储在vim的寄存器中,并且使用d命令删除的内容也会存储在寄存器中。

vim寄存器

我们使用:reg命令可以查看vim寄存器及其存储的内容。如图所示:

vim复制粘贴问题

常用的寄存器有unnamed寄存器 "+"*寄存器 "0"9 "-

unnamed寄存器用""调用。其存储执行"d", "c", "s", "x" 命令或 "y" 命令得到的内容。

"+"*可以引用系统剪贴板,在许多系统中,他们是相同的(如win),但有些系统中他们存储的内容却不相同(如Linux)。“+寄存器对应于桌面剪贴板(我们平常在使用CTRL+C、CTRL+X和CTRL-V时使用的就是这个桌面剪贴板)。”+对应的是用来存储鼠标选择并在大多数应用程序中使用鼠标中键粘贴的剪贴板的。

"0寄存器用来存储y指令复制的内容。

"1"9用来存储d命令删除的内容(删除的不能少于一行),最新的内容存储在"1寄存器中,旧的内容会依次从"1"9移动,"9的内容会丢弃。

"-寄存器存储删除少于一行的命令中的文本。

参考

在vim的一般模式下可以用"0p "+p "1p等命令来粘贴各自寄存器中的内容。

vim使用系统粘贴板

前面提到"+ "*可以引用系统剪贴板,但不是所有的vim都可以支持系统同粘贴板的。在命令行中输入

若返回的内容中clipboard前有一个-说明不支持。

如不支持,则需要安装vim-gnome。运行:

再次执行:

可以看到支持clipboard。

参考

为了更加方便地使用系统粘贴板,我们可以在.vimrc中添加下面这条语句。

(此语句将unnamed寄存器alias to "+寄存器,set clipboard=unnamed可以将unnamed寄存器alias to "*寄存器)

这样,我们就打通了系统粘贴板与vim寄存器的间隙。

参考

ideavim使用

在pycharm中我们可以安装ideavim来使用vim命令。同样,我们也会遇到上述问题。

解决方法一

关闭vim模拟器,使用一般的指令来复制粘贴。

我们可以在setting的keymap(右侧搜索框)中搜索VIM Emulator来设置快捷键,笔者一般使用CTRL+;来切换。参考

解决方法二

在 ~/.ideavimrc中添加

如果没有此文件则在home目录中新建此文件即可。

参考

 

LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: