开始用 ledger 记账了. ledger 添加 transaction 的一个麻烦的地方是, 实际上一个 entry 基本上只有 description 和数字不一样,date 往往是今天,两个交易账户往往是已经出现过的。因此我希望 ledger-mode 能提供点便利。
但我怎么都搞不明白 ledger-mode 怎么添加 transaction. 比如我执行了 ledger-add-transaction, 输入日期后,按 info page 的说法,Then typing a close match to the payee. 但我不行,我尝试输入 Expenses:Taxi, 但会报错:
Error: No accounts, and no past transaction matching 'Expenses:Taxi'
但前面已经出现过 Expenses:Taxi
了. 所以我该怎么用呢?
没用过 ledger, 不过 beancount 用了 n 年了。从你的需求看,即使这样的插入能搞定也效率不高。应该是直接复制之前的 entry,然后修改描述和金额即可。我在我的 beancount 配置就专门还设置了 duplicate entry at point 的函数与快捷键。后来用了 lsp,就更简单了(虽然还有些问题没解决):
(defun pina/evil-textobj-tree-sitter-transaction (count &optional beg end type)
"Select a Beancount transaction node using tree-sitter.
COUNT is the numeric prefix.
TYPE is inner or outer."
(interactive "P")
(let* ((node (treesit-node-at (point)))
(transaction-node (treesit-parent-until node (lambda (n) (string-match-p "transaction" (treesit-node-type n))))))
(if transaction-node
(progn
;; 获取节点的起始和结束位置
(setq beg (treesit-node-start transaction-node))
(setq end (treesit-node-end transaction-node))
;; 根据 count 扩展范围
(when count
(let ((sibling (treesit-node-next-sibling transaction-node)))
(dotimes (_ (1- count))
(when sibling
(setq end (treesit-node-end sibling))
(setq sibling (treesit-node-next-sibling sibling))))))
;; 返回范围
(evil-range beg end))
(message "No transaction found at point."))))
(map! (:map +tree-sitter-inner-text-objects-map
"t" 'pina/evil-textobj-tree-sitter-transaction)
(:map +tree-sitter-outer-text-objects-map
"t" 'pina/evil-textobj-tree-sitter-transaction)
)
由于我刚用 ledger, 换的成本还不高,我想请问,beancount 在输入效率或者查询方面比 ledger 是否有优势呢?
ledger 没用过不清楚,但当初选择 beancount 时应该是比较过的。beancount 其实基本不用输入,都是用 python 写脚本自动化账单导入,然后手工修改一些描述、账户名字。查询不知道你想查什么,建议看看 beancount 的可视化前端 fava 以及相关插件。
感谢。我想问,你是说支付宝,银行这些记录都可以自动导入?导入频率如果是每天都导入会麻烦么?
ksqsf
7
要输入的是交易标题(按文档的说法是 payee),不是账户名。
假设有:
2025/02/07 Uber Eats
Expenses:Food 22.18 USD
Assets:Credit:BOC
按 C-c C-a ,回车确认日期,在第二个提示处输入 uber eats 回车,而不是 Expenses:Food。
2 个赞
補充一點,如果payee不存在,回車確認日期後,第二個提示處不要輸入直接回車,就可以建立一個空白的payee做手動輸入。
对,可以参考一下 https://github.com/kaaass/my-beancount-template。基于 kaaass 的程序,在 AI 的帮助下写了自己的账单导入。
当你发现可以导出账单,就跟信用卡账单一样,就不用手工记录,那也就意味着不需要每天处理了。事实上我是每月初下载上个月的账单,导入成 beancount 文件,手工修改一些内容。
1 个赞