This is the ledger filetype for vim. Copy each file to the corresponding directory in your ~/.vim directory. Then include the following line in your .vimrc or in ~/.vim/filetype.vim au BufNewFile,BufRead *.ldg,*.ledger setf ledger | comp ledger You can also use a modeline like this in every ledger file vim:filetype=ledger Tips and useful commands ====================================================================== • Try account-completion (as explained below) • :call LedgerSetDate(line('.'), 'effective') will set today's date as the effective date of the current transaction. You can use also 'actual' in place of 'effective' or pass in a different date measured as seconds since 1st Jan 1970. • :call LedgerSetTransactionState(line('.'), '*') sets the state of the current transaction to '*'. You can use this in custom mappings. • :call LedgerToggleTransactionState(line('.'), ' *?!') will toggle through the provided transaction states. You can map this to double-clicking for example: noremap <silent><buffer> <2-LeftMouse> \ :call LedgerToggleTransactionState(line('.'), ' *?!')<CR> Configuration ====================================================================== Include the following let-statements somewhere in your .vimrc to modify the behaviour of the ledger filetype. * Number of colums that will be used to display the foldtext. Set this when you think that the amount is too far off to the right. let g:ledger_maxwidth = 80 * String that will be used to fill the space between account name and amount in the foldtext. Set this to get some kind of lines or visual aid. let g:ledger_fillstring = ' -' My special tip is to use so-called digraphs: Press <C-K> followed by the two-characters key sequence below. (in insert-mode) '. = ˙ or ': = ¨ --> ˙˙˙˙˙˙ or ¨¨¨¨¨¨ ', = ¸ --> ¸¸¸¸¸¸ .M = · --> ······ >> = » --> »»»»»» All those look rather unobstrusive and provide a good visual aid to find the correct amount. * If you want the account completion to be sorted by level of detail/depth instead of alphabetical, include the following line: let g:ledger_detailed_first = 1 Completion ====================================================================== Omni completion is currently implemented for account names only. Accounts ---------------------------------------------------------------------- Account names are matched by the start of every sub-level. When you insert an account name like this: Asse<C-X><C-O> You will get a list of top-level accounts that start like this. Go ahead and try something like: As:Ban:Che<C-X><C-O> When you have an account like this, 'Assets:Bank:Checking' should show up. When you want to complete on a virtual transaction, it's currently best to keep the cursor in front of the closing bracket. Of course you can insert the closing bracket after calling the completion, too. License ====================================================================== Copyright 2011-2009 by Johann Klähn Copyright 2009 by Stefan Karrmann Copyright 2005 by Wolfgang Oertl This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.