When you trigger minibuffer completion for a partial command/filename/etc., the *Completions* buffer lists possible completions aligned vertically (in columns) but sorted horizontally.

../                ./                   ajax-proj/         algorithms/
angular-phone/     angular/             annex/             archives/
blog-ideas/        clojure-koans/       ctags58/           diff-tryout/
encodings/         filters/             game-table/        git-grounds/
hartl/             invoice_angel/       jQuery-basics/     java/
making/            ng-fundamentals/     node-meetup/       pickaxe/

I find this much more difficult to scan than if they were sorted vertically, like Bash does.

../                annex/               encodings/         jQuery-basics/
./                 archives/            filters/           java/
ajax-proj/         blog-ideas/          game-table/        making/
algorithms/        clojure-koans/       git-grounds/       ng-fundamentals/
angular-phone/     ctags58/             hartl/             node-meetup/
angular/           diff-tryout/         invoice_angel/     pickaxe/

Is there a setting that controls this?


There is the variable completions-format (since Emacs 23.2). Just set it to 'vertical.

  • 1
    Holy cow! Despite Emacs' wealth of configurability, I keep running into really annoying aspects that don't have an easy solution. Happy to hear this is not one of them. completions-format is exactly what I was looking for, and setting it to 'vertical did the trick. Thank you! – ivan Oct 9 '16 at 18:54
  • Yes, I know the feeling … To be honest, I didn't know about this one myself. Ironically, I found out about it by browsing the documentation for icicles, pointed to by @Drew's answer. – Harald Hanche-Olsen Oct 10 '16 at 6:35
  • Hah, that really is ironic :) – ivan Oct 10 '16 at 12:41
  • i am used to the unix ls command which sorts vertically by default; also this customizable variable is not in the existing completion group but in the minibuffer customization group (residing in minibuffer.el) acessible by customize-group minibuffer – user15057 Jan 23 '19 at 10:07

You can easily do this if you use Icicles - see Vertical Layout.

You can make this the default behavior by customizing option icicle-completions-format to have the value vertical.

And you can toggle between horizontal and vertical layout anytime during completion, using C-M-^.

This affects all minibuffer completion, whether by completing-read or read-file-name (or anything else that uses these).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.