Just to add tweaks that I use with already mentioned Ido:
(require 'ido)
(require 'ido-hacks)
(require 'flx-ido)
(require 'ido-vertical-mode)
(ido-mode 1)
(flx-ido-mode 1)
(ido-hacks-mode 1)
(ido-everywhere 1)
(ido-vertical-mode 1)
(setq ido-enable-flex-matching t
ido-use-filename-at-point 'guess
ido-vertical-define-keys 'C-n-C-p-up-down-left-right))
I'm also using ace-window
ace-window
to switch between buffers together with ace-jump-mode
ace-jump-mode
to jump between visible windows. Comes with some getting used to but worth trying.
I have combined it with key-chord-mode
key-chord-mode
and hit so
for quick jump:
(key-chord-define-global "so" 'ace-window)
All of the above mentioned packages are available via the package manager from Melpa.