说起来,这剪切板查看器,还真不是一开始就想搞的。
主要是平时写东西、扒拉代码,那个复制粘贴用得叫一个频繁。有时候手一抖,刚复制好的东西,还没来及粘贴,就被下一个覆盖了,那叫一个气!尤其是有时候复制了一长串,或者好几个片段想组合着用,结果因为系统自带的剪切板只能存一个,搞得我手忙脚乱,效率低得不行。
后来就琢磨着,这不行,得找个法子。上网那么一搜,嚯,还真有不少这种所谓的“剪切板增强工具”、“剪切板历史记录”啥的。什么CopyQ,Ditto,还有些Mac上花里胡哨的Paste啥的,看得我眼花缭乱。
一开始也试过几个现成的,有些,功能倒是挺花哨,什么云同步,各种格式支持,但用起来总感觉卡卡的,或者界面复杂得跟迷宫似的,不爽快。还有些,要么就是要钱,要么就是广告一堆,烦人。我就想要个简简单单,能看我最近复制了能让我快速找回来的就行。
我的折腾之路
折腾了一圈,我就寻思,要不自己整个简单的?咱也不求多牛X,能记下最近几次复制的内容,能让我方便地翻翻历史记录,选中了就能直接用,这就够了。
第一步:琢磨原理
说干就干。我先是琢磨了一下,这玩意儿核心不就是监听剪切板变化嘛系统肯定有法子知道剪切板啥时候更新了。只要捕捉到这个信号,然后把剪切板里的内容读出来,存起来,不就成了?
第二步:动手开搞
然后我就开始找资料,看看用啥语言方便实现。我平时用Python比较多,就搜了搜Python怎么操作剪切板。还真有现成的库,什么pyperclip、pyperclip3,还有些直接调用系统API的法子。我选了个用起来比较顺手的,先写了个小脚本,试试能不能成功读取和写入剪切板内容。一试,成了!
接下来就是存储历史记录了。我想着用个列表来存,每次有新内容复制进来,就加到列表最前面。为了不让列表无限增长把内存撑爆,还得给它设个上限,比如就存最近的20条或者50条,旧的就自动踢掉。
第三步:搞个界面
光有后台逻辑不行,得有个界面让我看,让我选。我就用Python自带的Tkinter鼓捣了一个简单的窗口。左边一个列表框,显示复制过的内容条目,右边一个文本框,点击左边的条目,右边就显示完整内容。再加个按钮,“复制选中内容到剪切板”,或者干脆双击列表里的条目就直接复制,这样用起来更顺手。
我还特意加了个小功能,就是可以把某些常用的条目“置顶”或者“收藏”,这样就不会被后来的记录冲掉了。这个对我来说挺实用的,比如一些常用的代码片段、邮箱地址啥的。
第四步:完善细节
中间也遇到点小麻烦:
内容格式问题: 剪切板里不光有文本,还可能有图片、文件啥的。我一开始没想那么多,后来发现只支持文本也基本够我日常用了,图片啥的预览起来麻烦,就先放放,主要还是文本优先。
重复内容: 如果连续复制同样的内容,没必要存好几遍。我就加了个判断,如果新复制的内容和列表里最新的一条一样,就不重复添加了。
后台运行与快捷键: 总不能一直开着个窗口?我就研究了下怎么让它能最小化到系统托盘,然后通过一个全局快捷键(比如Ctrl+Shift+V这种)就能快速把它呼出来。这个搞了好一阵子,不同操作系统还不太一样,总算是弄利索了。
最终成果与感受
捣鼓了几天,东拼西凑,查了不少资料,踩了不少坑,还真给我弄出来一个能用的“剪切板查看器”!虽然界面可能有点糙,功能也没市面上那些商业软件那么强大,但胜在是自己一手打造的,完全符合我自己的使用习惯。
我再也不怕手快覆盖剪切板了。需要找之前复制过的内容,把我的小工具调出来一看,一目了然,选中,搞定!效率那是杠杠的。特别是写文档或者回邮件的时候,经常要用到之前复制过的几个不同片段,现在就方便多了。
所以说,有时候遇到点小麻烦,别先想着找现成的,自己动手琢磨琢磨,搞出个适合自己的小玩意儿,那成就感,可比用现成的强多了。而且在这个过程中,还能学到不少东西!这回实践,让我对剪切板的工作方式有了更深的理解,也算是意外收获。