VIM学习笔记 文本复制记录仪(YankRing)

Vim使用术语"yank"和"pull",来指代我们所熟悉的复制和粘贴 (Copy & Paste)。在Vim中,任何被复制和删除的文本,都会被保存在寄存器(Regists)中。例如,使用yy命令复制当前行或使用dd命令删除当前行,都会同时将当前行放入默认寄存器中。当然,你也可以在命令中指定寄存器。比如使用"ayy命令,将复制的文本放到寄存器a中;然后使用:pu a命令,就可以粘贴寄存器a中的内容。

使用:register命令,可以查看完整的寄存器列表:

Registers

面对大量的历史纪录,我们很难仅凭记忆来找到并粘贴之前复制的文本。而YankRing插件,则可以更加方便地查找和粘贴文本。

安装配置

推荐使用vim-plugVundle等插件管理器,来安装Vim.org上的YankRing插件。

可以在vimrc文件中,自定义插件的选项。例如以下命令指定条目的最小长度为2个字符,以避免删除的单个字符也被记录到YankRing中:

let yankring_min_element_length = 2

以下表格列示了主要选项的默认设置:

选项默认值描述
yankring_max_history100保存历史纪录的最大数目
yankring_history_dir$HOME保存历史纪录的文件位置
yankring_min_element_length1如果复制的文本长度小于此值,则不会被记录
yankring_max_element_length1MB如果复制的文本长度大于此值,则会被截断
yankring_enabled1自动启用YankRing
yankring_ignore_duplicate1忽略重复的纪录
yankring_window_auto_close1当选择某条纪录之后自动关闭YankRing窗口

YankRing窗口

使用以下命令打开YankRing窗口,以显示复制和删除文本的历史记录:

:YRShow

plugin_YankRing_YRShow_win

YankRing窗口顶端的状态行,显示以下向导信息,以帮助你操作列表中的历史记录:

选项AutoClose=1自动关闭窗口
ClipboardMonitor=1监控剪贴板
Inserts=0不记录最近输入的文本
命令<enter>粘贴文本到光标之后
p
P粘贴文本到光标之前
1-9粘贴第n个条目
d删除当前条目
r在YankRing窗口中的可视化模式下
选中的多行按倒叙粘贴到光标之后
s查找/过滤条目(支持正则表达式)
a开/关AutoClose选项
u刷新YankRing窗口
q关闭YankRing窗口
帮助?显示命令的帮助信息

点击?键,将显示各个命令的说明:

plugin__YankRing_YRShow_help.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<上一篇 | 目录 下一篇>