> One of the hard problems in personal finance is data capture
With hledger and vim, I typically search and copy a previous similar transaction, then search and copy similar items. I have a keybinding to change the date, so like 3\d changes the date of the transaction I copied to 3 days ago. Overall, being proficient in vim, capture takes very few keystrokes.
Since the files are plain text, I can easily e.g. list all products I've ever bought with a `grep | sort | uniq` pipeline, to check stuff like whether I put a product identifier under a wrong account or used different identifiers for the same product.
Also, since the files are plain text, I can track changes with git. That gives me clarity over changes in the sense that I can make a large change (e.g. reorganizing accounts) over historical transactions and review the changes before committing.
Regarding large changes, which I think is also a type of capture, I can easily make them with `sed -i ...`, vim macros, awk, etc.
> and input validation
After I've captured, running hb (which is a personal alias for `hledger balance`) results in hledger raising an error if a transaction is not balanced. I can also add an assertion `= X` to the end of account changes to assert what the account is supposed to hold after the change. The number comes from physically checking the account, whether that's by checking the bank app or opening my wallet and counting. hledger will raise an error when an assertion is wrong.
> Programs like QuickBooks and Xero
Being unfamiliar with QuickBooks and Xero, how would these programs do capture and validation better for me?