Goto Anything is a great feature in editors like Sublime Text, it allows you goto anywhere you want with minimal key strokes. This is what I wanted in Emacs for switching buffers. Both the switch-to-buffer and switch-to-buffer are not good enough.

The Sublime Goto Anything support goto any line any symbol in any file with fuzzy matching. For Emacs, if I can fuzzy matching buffers and switch to the buffer I will be more productive.

There are many Emacs extensions can help you auto complete things more efficient, one of them is Ido, there is a function ido-switch-buffer can do the almost same effect as Sublime Goto Anything.

Add those two lines to your Emacs config file

(setq ido-enable-flex-matching t)
(global-set-key "\C-p" 'ido-switch-buffer)

I use the ctrl + p as the shortcut just like Sublime. Now you can switch buffers using fuzzy matching, for example the buffer name of the Clojure REPL is "*cider-repl localhost*" you can press ctrl + p and type "ci", "crl" or any characters you can remember from the buffer name, you will quickly locate the right buffer.

Fuzzy matching in M-x minibuffer

Another place you may wish to fuzzy matching auto complete is in minibuffer when press M-x(Alt + x in Windows). For example when you write articles or blog post in Emacs, you will enable flyspell-mode, typing the command each time is cumbersome. There is this plugin smex which is built based on ido, has the same fuzzy matching feature. Just bind the M-x to smex as below

(global-set-key (kbd "M-x") 'smex)

Now just type "fsm" you will find the command is presented in the first position, smex can also remember the most frequently used command, when the fuzzy matching has many matches, the most frequently used will be ranked higher. You will find it takes less and less time to locate the command that you wanted.