CopyQ 是一个剪贴板管理工具,跨平台,有及其强大的扩展定制能力,没听说过的请自行搜索了解。这里就只是简单展示下本人平时使用的场景,其他场景请自由发挥,充分利用好这个神器,帮助自己提高各种效率,特别是学习和工作。
快速添加选中内容到Anki
说明:
笔记类型:@Basic 和 @Cloze 是自定义的,其实就是在默认的基础上新增了URL和Title字段,所以你的Anki里面没有对应的话就修改成自己有的,比如“Basic” 或者“基本”
代码最后一行的 GlobalShortcut=ctrl+alt+a 就是触发的快捷键,选中文本然后按键盘 Ctrl+Alt+A 就可以呼出菜单
[Command]
Name=QuickAnki
Command="
copyq:
ankiPost = function (args = {}) {
const AnkiHost = 'http://127.0.0.1:8765'
const AnkiVersion = 6
const ankiRes = networkPost(AnkiHost,JSON.stringify({
version: AnkiVersion,
action: args.action,
params: args.params
}))
if (ankiRes.error) {
throw ankiRes
}
const data = JSON.parse(str(ankiRes.data))
if (data.error) {
throw data.error
}
}
ankiPostWithSource = function (args = {}) {
if (args.params && args.params.note && args.params.note.fields) {
args.params.note.fields.Url = clipboard('Chromium internal source URL') + ''
args.params.note.fields.Title = currentWindowTitle() + ''
}
ankiPost(args)
}
showQuickMenus = function () {
const menus = [
{ 'text/plain': '@Basic-Front' },
{ 'text/plain': '@Basic-Back' },
{ 'text/plain': '@Cloze-Text' },
{ 'text/plain': '@Basic-Front-HTML' },
{ 'text/plain': '@Basic-Back-HTML' },
{ 'text/plain': '@Cloze-Text-HTML' },
{ 'text/plain': '@Basic-Front-CODE' },
{ 'text/plain': '@Basic-Back-CODE' },
{ 'text/plain': '@Cloze-Text-CODE' }
]
var selectedIndex = menuItems(menus)
const menu = menus[selectedIndex]
if (!menu) {
abort()
}
const label = menu['text/plain']
const [modelName,field,mime] = label.split('-')
const mimeType = mime === 'HTML' ? 'text/html' : 'text/plain'
let content = clipboard(mimeType) + ''
if (mime === 'CODE') {
content = `${escapeHtml(clipboard())}
` } ankiPostWithSource({ action: 'guiAddCards',params: { note: { deckName: '系统默认',modelName,fields: { [field]: content } } } }) } copy() showQuickMenus()" IsGlobalShortcut=true Icon= GlobalShortcut=ctrl+alt+a
批量添加英文句子到Anki
说明:
@YouDao 是自定义的笔记类型,主要是放原文的Word,放解释的Exp,放音标的Phone,还有放音频的Audio,其他的都只是附加信息
这个命令做的事情就是解析每一行文本,用有道查询解释和音标,然后用Google翻译的TTS生成朗读音频,最后生成一条Anki笔记,笔记里面有3个卡片模板,分别用来练习阅读、写作、听力,而口语能力在刷这3张卡片的时候都可以跟读练习,所以这样就够我用了
代码太长就不贴上来占篇幅了,有需要的就告知。另外如有其他个性化的需求,愿意支持的朋友请到某宝搜店铺(码农爱学习),可以提供定制服务,CopyQ和Anki都可以。
快捷查询
说明:
查词和翻译只是个人需求,Linux上没有开源好用的取词软件,我这样做一是减少安装一个常驻程序,二是使用习惯可以跨平台,仅供参考。
不要局限于演示的案例,任何支持通过URL传参的网站都可以,搜索引擎、AI等等,随意在menus里面添加修改即可。
[Command]
Name=QuickQuery
Command="
copyq:
showQuickMenus = function () {
const menus = [
{ 'text/plain': 'Query-Youdao',url: 'https://www.youdao.com/result?word=%1&lang=en' },
{ 'text/plain': 'Query-Deepl',url: 'https://www.deepl.com/en/translator#en/zh/%1' },
{ 'text/plain': 'Query-Google',url: 'https://translate.google.com/?sl=en&tl=zh-CN&text=%1&op=translate' },
]
var selectedIndex = menuItems(menus)
const menu = menus[selectedIndex]
if (menu) {
open(menu.url.replace('%1',encodeURIComponent(clipboard())))
}
}
copy()
showQuickMenus()"
IsGlobalShortcut=true
Icon=
GlobalShortcut=ctrl+alt+q
一键摘录做笔记
说明:
本质上就是写文件,在这个基础上能尝试的玩法也是无穷无尽的了
记得把文件路径修改成你自己的
[Command]
Name=Obsidian
Command="
copyq:
obsidianInbox = function () {
const html = str(clipboard('text/html')).replace(/^]*>/,'')
const dataToWrite = `${html || str(clipboard())}
---
${currentWindowTitle() + ''}
${clipboard('Chromium internal source URL') + ''}`
var f = new File(`D:obsidianNotes/${Date.now()}.md`)
if (!f.openWriteOnly() || f.write(dataToWrite) == -1) {
throw 'Failed to save the file: ' + f.errorString()
}
f.close()
}
copy()
obsidianInbox()"
IsGlobalShortcut=true
Icon=
GlobalShortcut=ctrl+alt+s未来探索到其他新奇高效的玩法再回来补充更新吧,水平有限,如有错漏欢迎批评指正。
网友评论