This is a mirror of http://www.vim.org/scripts/script.php?script_id=1849 There are very simple ways to insert a closing brace by setting up a few mappings. The problem with all these approaches is that they break undo, history or both. This script is my sixth attempt at correcting this problem and the first one that has worked in all scenarios. Using this script, typing ``(`` will result in (|), where | is the cursor position and the double backticks are just marking input. Typing a ``)`` will move the cursor outside the parens. This moving outside works even in nested scenarios. Typing ``if(my_array['key`` results in if(my_array['key|']) and ``)`` gets you if(my_array['key'])|. The paired characters are: [, (, {, ", ' Note: in Vim files (including .vimrc), you may not want pairing of double quotes because it is the comment character. You can just provide all such filetypes where pairing should be ignored: let g:autoclose_no_dquote = ['vim'] Similarly, for single quotes: let g:autoclose_no_squote = ['clojure', 'rust'] If you like this script, you should also check out surround.vim