分配快捷键
想要用快捷键打开一些页面(比如特定的 MOC 页面,像是 DailyNote 的主页、项目的目录……甚至是某些插件的界面),但是发现常用的快捷键都已经分配过了 Orz
怎么办呢?
我灵机一动想到,在微软的 Visual Stuio 软件内会有连续按键组成的快捷键[1]:
例如,上图中的 Ctrk+K, Ctrk+S
就是在按下 Ctrl+K
之后,再按一下 S,就能执行「包裹代码」的功能。
在 Obsidian 内,果不其然也有插件实现了这个功能!那就是——Sequence Shortcuts[2]!
借助这个插件,我们可以像分配普通快捷键一样,给命令分配「连续按键快捷键」:
分配方式很简单,先点加号,然后按下快捷键序列(按住 Ctrl,按下 K 然后按下 M),最后点击打勾按钮确认:
这样一来,就可以用 Ctrl+K+M
来执行这个命令了!
[!info] 快捷键重复的情况
需要注意的是,这样的前提是你的第一个快捷键(比如上面的Ctrl+K
)没有被占用。如果占用了的话,按键会无效。
这时候可以换一个快捷键,或者在 OB 设置内的快捷键把分配了的快捷键取消掉。
打开指定页面
页面举例
比如说,我有这么几个常用的页面:
- iCloud 收集页面:
Ctrl+K+I
- 卡片盒页面(Zettelkasten):
Ctrl+K++Z
- 晨间日记:
Ctrl+K+D
- Vault Explorer 插件:
Ctrl+K+V
统一使用 Ctrl+K
作为前缀(K 代表 Key,也是和 VS 那边的快捷键统一),然后取页面的首字母来作为第二个字母,方便又好记。
如你所见,因为 Sequence Hotkeys 插件是执行指令,所以不仅仅是打开新页面,你可以用连续快捷键执行任何 Obsidian 指令。
只不过运行指令不需要教,所以这里略过不提。
那么怎么通过指令打开特定的页面呢?
这里有两种方式:
- Templater 插件
- Hotkeys for specific files 插件
Templater 的做法
首先是最常用的 TP 插件,可以创建一个新模板,粘贴以下代码:
<%*
// 在这里输入你要打开的文件名
filename = "Zettelkasten";
const file = tp.file.find_tfile(filename);
app.workspace.getLeaf("tab").openFile(file);
%>
然后在 TP 插件里将这个模板添加进「Template Hotkeys」:
这样一来它就会被创建成一条单独的指令。
然后,就可以在刚才 Sequence Hotkeys 的插件设置界面给它分配连续快捷键了。
Hotkeys for specific files
这个插件[3]更简单轻松一些,安装完之后直接进入插件的设置页面:
先点击 Create 按钮创建一个新的命令框,然后在命令框里输入文件路径。
最后,点击 Add 按钮将指令注册到 OB。
这样就完成啦!
总结
这次的文章其实就是两个要点:
- 怎么把「打开 xx 文件」注册成一个指令(Command),以便分配快捷键
- 利用 Sequence Hotkeys 插件使 OB 支持将「连续按键」作为快捷键