If you can TURN ON AUTOCOMPLETE AND FILE NAME SPELLING CORRECTION! That's probably the two things that will save you the most time. Then, learn to use them - Bash and Zsh have tab-completion. Ksh has an inefficient escape-backslash, so I'd recommend against Ksh.
I use Zsh, but aliases like this would work in almost any shell except Csh:
alias l='ls -FC --color=tty'
alias ls='ls -FC --color=tty'
alias h=history
alias m=more
alias vi=vim
alias cx='chmod +x'
It seems like an alias for 'ps' should be in there, but I find myself using 'ps' in a wide variety of ways, and I haven't found anything so far.
In Zsh, set up your RPROMPT (not a typo!) variable:
RPROMPT='%d'
The entire directory appears on the right side of the command line, ready for cutting-n-pasting. More on that later.
You should use a properly compiled modern Vim, because of the ability to have multiple vim-windows into a file, and multiple buffers. Your .vimrc could have things like this in it:
set mouse=c
set ml
set mls=5
set nowrap
set nobackup
set nonu
set showmatch
set tabstop=4
set shiftwidth=4
set showmode
set showcmd
set ruler
set notextauto
set laststatus=2
set mps=(:),{:},[:],<:>
set modelines=0
A lot of those are personal preference, but I do happen to believe that 8-space tabs make code less readable, and there's a study floating around to prove it.
Also, the "mouse=c" is important. You shouldn't be using your mouse to move around inside a file. Taking your hands off the keyboard, touching the mouse and them moving them back is slow. Use "hjkl" cursor movement, and other keyboard paging and cursor movement keys.
If you're using X11, you should do a few things to your Xterm configuration. This comes out of my .Xresources file:
XTerm*VT100.scrollBar: true
XTerm*VT100.saveLines: 1000
XTerm*VT100.cutNewLine: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48
XTerm*VT100*translations: #override \n\
<Key>F2: insert-selection(PRIMARY,CUT_BUFFER0)
Give Xterm a scrollbar by default, save 1000 lines of text in the buffer, that's pretty standard.
The charClass directive makes a "word" include things like '.', '/' and '*'. Double clicking on any part of a '/'-separated file name, and you get the whole thing, less ':' characters.
cutToBeginningOfLine works with the Zsh RPROMPT above. Triple click on the path of the current working directory that appears on the RHS of your command line, and you pick up only the path: the copy stops at the beginning of the word. Highly efficient once you're used to it.
The above X resources also makes the into a paste key. That way, once you've copyed (probably using the mouse) you can paste without moving your hand back to the mouse to click.