使用 fcitx5-lua 编写 lua 插件

突然发现五个月前自己写过一篇 fcitx5-lua 的教程,刚好拿来水一篇

fcitx5 终于加上了 lua 支持,可以使用 lua 编写一些简单的插件。但是文档一如既往地非常少,查阅了大量资料并翻看源码以后总算弄懂了插件的编写步骤,记录一下以免忘记,顺便分享给同样需要的人。

【译】设计优雅的 Rust 库 API

一篇讲述 Rust API 设计原则的经典老文,虽然老但仍然值得阅读。前几天有事情把它从旮旯里翻出来了,虽然是经典老文但我估计很多人都没有读过,最近闲着没事干脆用我的辣鸡英语水平翻译一下,也算为 Rust 中文社区做一点贡献。

原文见:https://deterministic.space/elegant-apis-in-rust.html

加速你的 zsh —— 最强 zsh 插件管理器 zplugin/zinit 教程

2020-01-26 更新:

Zplugin 已改名 Zinit,不过教程中的内容仍然适用。 阅读时请自行在脑中替换 (

2020-01-14 更新:

博主已经叛逃 powerlevel10k 了(注意是 10k 不是 9k)。 p10k 的 Instant Prompt 功能非常好用,它可以在其他插件的加载过程中提供一个精简的 prompt 供使用,相当于后台加载。

这个功能并不能加快实际的加载速度, 比如 time zsh -ic 'exit' 的结果仍然不会变,但是使用体验提升巨大(体验上几乎是瞬间加载)!

读到这里的读者建议先尝试一下 p10k(如果很满意就不用往下看了)。

我已经去掉了配置文件中所有的 zinit 延迟加载语句,不过 zinit 即使去掉延迟加载功能仍然十分强大,我还是选择继续使用 zinit。 而且如果加载了特别耗时的插件的话,zinit 仍然是有用的。

前言

Zinit 是个冷门但是却强大无比的 zsh 插件管理器,它拥有一个 killer feature —— Turbo mode,可以让插件在后台加载。这意味这你可以先加载最重要的插件,比如语法高亮和自动建议,剩下的可以统统放到后台加载,让你的 zsh 尽快进入可用状态。

利用这个机制,zinit 可以将 zsh 的启动时间缩短到几十毫秒——以我的配置为例,只需要 35 毫秒左右。而使用传统的插件管理器比如 antigen,需要近 200 毫秒才能加载完成。

这里有一张图,对比了不同插件管理器的速度(来源:Comparison of ZSH frameworks and plugin managers

可以看到 zinit 在插件数目变多时速度……似乎更快了??? 什么鬼,这个大概是实验误差吧,也有可能是第一次启动时编译了自身所以后面变快了。不过 zinit 的速度是毋庸置疑的,哪怕这个插件需要数十秒来加载,只要放在后台加载,一样不影响你的 zsh 启动。

然而!!这个工具虽然强大,却没多少名气,让人倍感惋惜。

所以写下这篇文章,希望能有更多人了解到这个工具。 不过本文只涉及了它强大功能的冰山一角,深入研究推荐阅读 Zinit Wiki 和 Zinit 的 README

(虽然说是冰山一角,本文的内容也足以覆盖绝大多数情况了)

(如果你很懒不想研究的话,文末还有一份完整的示例配置,安装完成后可以直接使用)

xkeysnail 使用指南

Emacs keybings Everywhere!

简介

xkeysnail 是一个非常强大的 keyboard remapping 工具, 它类似于 xmodmap, 但更为灵活. 不仅能重映射键位, 还能重映射快捷键, 甚至能在不同的程序下使用不同的映射!

再也不用两套快捷键换来换去了!! ( 早点知道这个东西, 我就不至于练就一身无缝切换快捷键的毫无卵用的本领了…

项目地址: https://github.com/mooz/xkeysnail