I love abbrevs, and I use them all the time. While I prefer yasnippet for more complex things, abbrevs are great. I use them for simple (1-5 word) expansions, and they’re particularly helpful with SQL mode.
One of my gripes is that when I define abbrevs for a programming mode like python-mode, the abbrevs don’t get used when I use the REPL via run-python.
This is pretty straightforward to fix:
(eval-after-load 'python
'(progn
(derived-mode-merge-abbrev-tables python-mode-abbrev-table
inferior-python-mode-abbrev-table)))
This tells Emacs to merge the python-mode abbrevs into the inferior-python-mode abbrev table. Now, when I fire up Python in Emacs, I have all my usual abbrevs. This may be inadvisable if you’re using abbrev to hook into auto-insert or to trigger behavior which expects a non-interactive environment, but it’s perfect when you just want to type “imp” instead of “import.”