Vim使用术语"yank"和"pull",来指代我们所熟悉的复制和粘贴 (Copy & Paste)。在Vim中,任何被复制和删除的文本,都会被保存在寄存器(Regists)中。例如,使用yy
命令复制当前行或使用dd
命令删除当前行,都会同时将当前行放入默认寄存器中。当然,你也可以在命令中指定寄存器。比如使用"ayy
命令,将复制的文本放到寄存器a中;然后使用:pu a
命令,就可以粘贴寄存器a中的内容。
使用:register
命令,可以查看完整的寄存器列表:
![06fc56c4665dc296e7d4adeb50a2eb96.png](https://i-blog.csdnimg.cn/blog_migrate/5f17fedb9e39a9e658c850e3c2b5a3ad.png)
面对大量的历史纪录,我们很难仅凭记忆来找到并粘贴之前复制的文本。而YankRing插件,则可以更加方便地查找和粘贴文本。
安装配置
推荐使用vim-plug或Vundle等插件管理器,来安装Vim.org上的YankRing插件。
可以在vimrc文件中,自定义插件的选项。例如以下命令指定条目的最小长度为2个字符,以避免删除的单个字符也被记录到YankRing中:
let yankring_min_element_length = 2
以下表格列示了主要选项的默认设置:
- yankring_max_history,100,保存历史纪录的最大数目
- yankring_history_dir,$HOME,保存历史纪录的文件位置
- yankring_min_element_length,1,如果复制的文本长度小于此值,则不会被记录
- yankring_max_element_length,1MB,如果复制的文本长度大于此值,则会被截断
- yankring_enabled,1,自动启用
- YankRingyankring_ignore_duplicate,1,忽略重复的纪录
- yankring_window_auto_close,1,当选择某条纪录之后自动关闭YankRing窗口
YankRing窗口
使用以下命令打开YankRing窗口,以显示复制和删除文本的历史记录:
:YRShow
![9dd7b803eb0fbb6141478f174dd88f91.png](https://i-blog.csdnimg.cn/blog_migrate/31347682ff1f30c540bd9bf653bf3c24.png)
YankRing窗口顶端的状态行,显示以下向导信息,以帮助你操作列表中的历史记录:
![0921bf9e7ee03d63ac5f99ae4dff2ac7.png](https://i-blog.csdnimg.cn/blog_migrate/5eade49e14aea2921eed9fff8abc3e27.jpeg)
点击 ? 键,将显示各个命令的说明:
![22c548d7dc3604f07c98e0da7606002f.png](https://i-blog.csdnimg.cn/blog_migrate/16b3ae04351ba52e1527621e5d736638.png)
您可以使用上下键、鼠标滚轮或移动命令,来浏览所有条目;当使用回车键、鼠标双击或命令,选择某条纪录之后,将完成粘贴操作并关闭YankRing窗口。
YankRing命令
使用以下命令,可以将指定范围内的文本加入YankRing:
:5,10YRYankRange
在可视化模式下,使用YRYankRange
命令,则会将所有选中的文本加入到YankRing中。
使用以下命令,将在屏幕底部提示你输入关键字(支持正则表达式)以进行查找,并将在YankRing窗口中显示匹配结果:
:YRSearch
帮助信息
使用:h yankring
命令,可以查看YankRing插件的帮助文件。
使用:h yankring-tutorial
命令,则可以参照实例以快速了解插件功能。
YankRing无疑大大增强了Vim复制粘贴的功能,但同时也引入了更多的快捷键和命令;通过新建YankRing窗口,来完成查找和粘贴历史条目的操作,对我个人来说也看不到效率的提升。
更重要的是,例如Ditto等操作系统层面的剪贴板工具,覆盖了更多的应用,而且操作也更直观。那么YankRing是不是一个多余的存在了呢?
Ver: 2.0 | YYQ<上一篇 | 目录 | 下一篇>