关于 vim 中的剪切版
vim复制劝退
vim 是一把双刃剑,用得好能事办功倍,但是由于它上手成本较高,因此很多人还是觉得很难用,坚持下来的不多。
对于vim 中的剪切板就是如此。
不妨看下这样的场景(可以在 terminal 打开终端跟着一起做):
用 vim 打开一个文件,并写入以下内容。(或是直接输入 vimtutor)
每一节的命令操作将会更改本文。推荐您复制本文的一个副本,然后在副本上
进行训练(如果您是通过"vimtutor"来启动教程的,那么本文就已经是副本了)。
如果你要把网页上的内容复制到 vim 文本中,只需要在网页上 command + c 把内容复制到剪切板,vim 命令模式下按下 i ,然后 command + v 即可。
但是如果要把 vim 中的内容复制到其他地方呢?(如把 vim 中的某个单词复制到浏览器)
你的第一反应是不是:
在 vim 中,光标选中文字,command+c,然后去浏览器粘贴就行?
如果这一步你成功了,那么如果要复制整个段落,复制的内容超过显示器能展示的区域,意味着,你必须鼠标左键按住不放选中的情况下,还要滑动窗口。(这一步太难了)
此时,你可以试试。效果肯定不好,此时肯定会劝退很多人了。心里大概率也在抱怨 vim 的反人性。(因为如果浏览器,我们选中的时候,只需要把鼠标置于显示器能看到的最后一行,浏览器会自动往下移动,而到了 vim 就不奏效了)
那有没有解决办法呢?
答案是肯定的。
需要用到 vim 剪切板的功能:
启用/禁用
- 手动开启(推荐, 按需开启/禁用)
- 打开文件:
vim filename
- 切换到命令模式:
ESC
+:
- 输入
set clipboard
可以查看当前状态 (set cli
+TAB
可以自动补齐的) - 输入
set clipboard=unnamed
开启剪贴板功能 - 输入
set clipboard=
停用剪贴板功能
- 打开文件:
- 编辑文件时默认开启
- 在
~/.vimrc
文件里设置set clipboard=unnamed
- 临时禁用/开启方式同上; 每次默认是开启的 (有时也不一定方便的)
- 在
局部启用(推荐)
全局启用有个明显的缺点, 就是缓冲区和剪贴板通用了
比如: yw
yy
dw
vip
之类的操作内容直接放到剪贴板里了;
比如在网页拷贝的字符串, 想在 vim
里覆盖一段内容, 当你删除内容后粘贴时, 是你刚刚删除的内容, 因为删除的内容已经把剪贴板覆盖了
:set clipboard=
改为关闭模式可视化模式选中目标文本
"*y
:存入寄存器"*
中, 而"*
和"+
在Mac和Windows中,都是指系统剪切板(clipboard); 其他程序直接就可以:Ctrl+v
粘贴使用"*p
- vim 粘贴"*
寄存器的内容, 即从系统剪贴板里粘贴到 vim 里; 比如从网页上拷贝的内容可使用粘贴