Snippet指一组内容片段。可以给这组内容片段起一个短小,易记的名称,输入这个名称,就可以自动输入这一组内容片段,达到快速输入的效果。
Snippet可以很好的应对周期性出现的,可能具有一定相似性的交易。比如,每月的薪水,房租或者软件订阅费等。
这类交易有几个特点:
- 周期性出现,周期可能是月度,季度等等。周期间隔越久,两个周期之间就会容纳更多的其他交易条目。如果你像我一样,习惯用单文件来记录整个账本的话,要向上翻很久才能找到上一次记录的交易。
- 具有相似性,最典型的就是薪资收入,每月缴税金额会变动, 因此每次都需要复制,粘贴后,还需要修改从上一个周期复制下来的交易明细数据。
周期性交易条目示例
示例一:房租消费:
2024-07-01 * "南山炸猪排3栋604" "7月房租"
Expenses:Apartment:Rent 1680.00 CNY
Expenses:Apartment:Water 12.00 CNY
Expenses:Apartment:Electricity 202.86 CNY
Assets:CN:CMB:Checking
示例二:薪水收入:
2023-07-05 * "6月工资"
Income:CN:COMPANY:Salary -12000.00 CNY
Expenses:CN:GOV:住房公积金 600.00 CNY
Expenses:CN:GOV:Tax 843.29 CNY
Expenses:CN:GOV:社保:养老保险 768.00 CNY
Expenses:CN:GOV:社保:医疗保险 192.00 CNY
Expenses:CN:GOV:社保:失业保险 7.08 CNY
Assets:CN:CMB:Checking
使用snippet,我们就可以很快速输入这类内容片段:
创建自定义snippet
有很多工具都带有自定义snippet的功能,我习惯使用VS Code来记录,因为VS Code上有一些实用的扩展插件,同时VS Code的文档也非常完善。
其实自定义snippet的前提,是我们已经将一些交易条目“固化”了。这个过程是也手动记账的优势。经过几次手动记录和调整,对最终的条目满意之后,我们就可以使用snippet,实现“半自动化”。
根据VS Code的帮助文档,在指定位置创建一个名为beancount.json
的文件。
上面示例的内容,通过输入rent_example
关键字,就可以自动填充关于每月支出房租的交易条目,也正因为这个snippet是我们经过多轮手动记账之后保留下来的最终形式,因此重复的内容不需要改动,只需要修改每次有变动的数字,比如水电费。
"房租": {
"prefix": "rent_example",
"body": [
"${1:日期} * \"${2:房屋地址}\" \"${3:N}月房租\" ",
"note: ${4}",
" Expenses:Apartment:Rent 1680.00 CNY",
" Expenses:Apartment:Water ${5} CNY ;水费",
" Expenses:Apartment:Electricity ${6} CNY ;电费",
" ${7:Assets:CN:CMB:Checking} -${8:总支出} CNY"
],
"description": "预定义房租postings"
}
prefix
:是我们调用这个snippet需要输入的关键字;
body
:是具体的交易条目,其中的数字就是第几次按Tab键要跳到的位置;
当输入prefix
的时候,就能看到我们自定义的snippet
对于每个月的薪水,也是类似的做法:
"工资": {
"prefix": "salary_example",
"body": [
"${1:日期} * \"${2:公司名称}\" \"${3:N}月工资\" ",
" Income:CN:COMPANY:Salary -12000.00 CNY",
" Expenses:CN:GOV:住房公积金 600.00 CNY",
" Expenses:CN:GOV:Tax ${4:个人所得税} CNY",
" Expenses:CN:GOV:社保:养老保险 768.00 CNY",
" Expenses:CN:GOV:社保:医疗保险 192.00 CNY",
" Expenses:CN:GOV:社保:失业保险 7.08 CNY",
" Assets:CN:CMB:Checking ${5:税后收入}"
],
"description": "预定义工资postings"
}
完整的snnipet文件可以在这里找到。
Bonus
使用这些Snippets还有一个好处:可以发现某些交易条目的金额变动。
拿工资收入举例来说,住房公积金
,养老保险
,医疗保险
,失业保险
基本上一年之中,很少会变化,所以我们在自定义snippet的时候,就有理由把金额固定。并且,即使金额固定,在登记个人所得税
和税后收入
之后,不会引发插件报错,即我们所记录的这笔账,是平的(借贷相等),符合复式记账的基本要求。
如果有一天,公司调整了其中某一项的金额,在你按照平时的习惯记完这笔帐之后,就会出现账不平的错误信息,自然也就迫使你去寻找究竟是哪一个金额发生了变动。
关于这个系列
Beancount Magazine | Beancount 杂志系列是关于使用Beancount记录个人财务的自我实践,分享自己对管理,理解个人财务状况和记账的想法。
如果你也对这些主题感兴趣,不妨订阅试试看,希望能这些内容能对你有帮助😁