用途:在 Linux 上通过 vdirsyncer 将 CalDAV 日历(iCloud、Google、Fastmail、Nextcloud 等)同步为本地 .ics 文件,再用 khal 读写和查询。
主要能力与用法:查询或修改前后应先运行 vdirsyncer sync。查看事件可用 khal list(今天)、khal list today 7d(未来 7 天)、khal list tomorrow、khal list 2026-01-15 2026-01-20(日期范围)、khal list -a Work today(指定日历)。搜索用 khal search "meeting",可加 --format。创建用 khal new 2026-01-15 10:00 11:00 "Meeting title",全天事件省略时间,可加 :: 描述;创建后再 vdirsyncer sync。编辑用 khal edit(交互式,需 TTY,自动化可配合 tmux),菜单选项 s/d/t/l 分别改摘要、描述、时间、地点,D 删除,n 跳过,q 退出;编辑后同步。删除通过 khal edit 后按 D。
输出格式:脚本化可用 --format 与占位符 {title}、{description}、{start}、{end}、{start-date}、{start-time}、{end-date}、{end-time}、{location}、{calendar}、{uid}。
缓存:khal 缓存位于 ~/.local/share/khal/khal.db,数据陈旧时可删除该文件。
初始配置:先配置 ~/.config/vdirsyncer/config(示例含 iCloud 的 caldav 远端与本地 filesystem 存储、conflict_resolution = "a wins"),再配置 ~/.config/khal/config(日历路径与 type = discover、default_calendar 等),首次运行 vdirsyncer discover,然后 vdirsyncer sync。各提供商 URL 已给出。
限制:运行环境为 Linux;khal edit 为交互式,需要 TTY,否则需借助 tmux;改用其他提供方需按其对应存储类型或 URL 配置。资料未说明收费、价格或其它平台支持情况。