logseq-plugin-vim-shortcuts
logseq-plugin-vim-shortcuts copied to clipboard
功能设想:实现在命令模式保留光标
您好,我是您软件的用户,这是一个优秀的软件,我也想尽我的一份力. 因为没有堪比 vim 的编辑体验,所以我一直没有使用 logseq. 在遇到您的插件后,我本以为这个障碍终于消失了, 但令人遗憾的是它缺少在命令模式控制光标的功能.我知道在未来软件可能会实现这个功能,但是我等不及了.
所以,我找到一个关于实现在命令模式依然保留光标的想法,我在今天验证了它是可用的,我在尝试自己实现. 但我对 logseq 还不够了解,所以想请教您,要是能帮上忙就最好不过了. 它的内容如下.
// 监听主页面的按键输入
top.document.onkeydown = async function (e) {
console.log(e)
// 阻止按键在文本框输入字符,然后识别成命令
e.preventDefault()
// 在按下 esc 键后,因为没有拦截到它,所以光标还是消失了
let blockUUID = await logseq.Editor.getCurrentBlock();
// 现在使用这个方法,重新进入编辑模式,它会复现光标
await logseq.Editor.editBlock(blockUUID.uuid);
}
要点就是 top 这个对象,根据我了解它有这样的缺憾.
- 发布在市场中的 Logseq 插件默认情况是运行在独立域名中的 iframe 沙盒里,所以访问 主视图 top 引用(指向到主视图的 window 对象)的能力被跨域安全策略禁止.
- 目前只有在本地通过 Load unpacked plugin 的方式加载插件,才能访问到 top 引用。
- 因为用的不是 api,所以稳定性存疑
最后, happy hacking!
我用了你的代码,没有看到光标效果,关于光标我也希望官网能够尽快支持,另外 在vim之外模拟vim是不可能尽善尽美的,我的原则是差不多就行。不过还是谢谢你的建议,等官方支持了光标和API,我这边的快捷键会尽快跟进。
感谢回复,最终我还是没有忍住自己写了些代码:https://github.com/j-wyatt-a/vim-wyatt-logseq-plugin,自用完全够了。 另外 top 对象在发布之后的版本里应该是能用的,我在其它的插件里看到过。
不得不说自己写功能真是很舒服,logseq 让我得到了在 emacs 里没有的自由和享受。
希望 logseq 的功能尽快完善,发展越来越好。