Up to Speed vim

G. Wade Johnson

Master Your Tools

Need an image of tools here

Part of being effective as a developer is mastering your tools. You should have a good understanding of your editor, version control, language, static analysis tools, unit test tools, etc. You don't have to master them all at once, but you should be improving your skills with these tools all the time. Spending a little time practicing every day can improve you efficiency for the rest of your career.

Focus on the Editor

This talk is going to focus on the editor. Although, vim is my preferred editor, the concepts apply to most proogrammer editors. The actual commands or keystrokes may be different from editor to editor, but many of the concepts remain the same.

vim Philosophy

Learn the features that help you to edit, rather than write. You will spend much more time changing text than you spend writing it for the first time. vim is optimized for editing.

Basic Configuration

Need a minimal configuration

filetype on
filetype plugin indent on
set nocompatible        " not vi compatible
set ignorecase          " ignore case on searches
set smartcase           "   ... unless there is an uppercase character
syntax on
set incsearch             " perform an incremental search
set hlsearch              " highlight matches when searching
notes

Efficient Repetition

notes

Most Important Command

Running joke about people getting in to vim and not being able to get out.

Learning Resources

notes

Modes

notes

Movement

Avoid the arrow keys. The arrow keys require you to move you hands away from the home row, which slows you down. Also, the arrow keys are in different places on different keyboards. This slows you down even more if you work on different computers.

Simple Edit Commands

notes

Edit Command Patterns

notes

Edit Commands

notes

Odder Commands

notes

Dot Formula

notes

Undo and Redo

notes

Miscellaneous Commands

notes