Helm features buffer navigation that is more powerful than ido but apparently has a bit of a learning curve. Say I want to open a file in


And my mini buffer currently reads

Find files or Url: ~/java/com

The helm buffer list will not let me <TAB> for completion like in ido. <RETURN> will open the buffer list, which is also not what I want. However to select the directory I must hit the right arrow key which requires leaving the home keys on my keyboard and is therefore very slow.

Per answer below C-j or C-z is the answer I'm looking for. However at that point it's still very hard to navigate, as Helm will default to ./ as the directory listed, i.e.:

  1. Go to helm-find-files
  2. Pick any directory
  3. After you are taken to the next file list, the entry highlighted in "green" will be the_directory/.

This means if you type C-j again it will "take" you to exactly where you are. This contrasts with ido, where hitting <RETURN> a few times will auto-complete out using logic (I think just "last picked directory") to determine which directory should be default.

Therefore I must always type C-n twice or type the first letter of the directory. It certainly doesn't "fly" like ido-mode does, so this is still too unusable for me. Is there a hack for this as well?

  • 1
    You should be able to hit C-z (helm-execute-persistent-action) for completion in the same manner that you want to hit TAB. I swapped these two keys as @tuhdo recommends in his popular helm guide. – nanny Apr 6 '15 at 16:52
  • @nanny I saw that in the guide but didn't really understand what a "persistent action" is. I guess it does this, for one. – djechlin Apr 6 '15 at 16:53
  • 1
    Others answered your question but my guide could make Helm more enjoyable for you. Use my sample config in the guide for TAB to go in directory. – Tu Do Apr 6 '15 at 18:50
  • @TuDo ah, that's yours, great job. I followed the below answer but it still didn't completely solve my problem, see edit. – djechlin Apr 6 '15 at 19:32
  • @TuDo: That guide is sweet, it's what got me to start using helm in the first place. – Meaningful Username Apr 6 '15 at 19:41

C-c ? is your friend when it comes to Helm for context dependent help. So hit that when you're in helm-find-files, and it will tell you that C-j will expand to a file (or directory) name. When the candidate directory you want is highlighted, hit C-j and continue your travels from that directory, like you woud with return in ido.

Further, C-l will remove the current directory/file name, allowing for new input.

|improve this answer|||||
  • Thanks! This is good but didn't fully solve my problem, see edit. – djechlin Apr 6 '15 at 19:32
  • @djechlin: Not sure I understand what you mean, maybe C-l is what you're looking for? – Meaningful Username Apr 6 '15 at 19:37
  • Not that; see edit again. – djechlin Apr 6 '15 at 19:44

I found two solutions to this problem:

  • Use helm-find instead, which, as in unix find, will search recursively.
  • Use helm-projectile with projectile instead.
|improve this answer|||||
  • Using helm-find with a prefix argument (C-u C-x c / on my system) is exactly what I was looking for. The prefix argument makes helm-find prompt for where to start the search from. Note that the pattern you type using find -name pattern syntax. I'm already using projectile, but I want something that supports quick finding when I'm not inside a projectile project. – ntc2 Dec 24 '18 at 20:37

It might not be the "Helm" way, but I will argue that executing the first action with TAB instead of C-z is easier for my brain and hands. This is more evident when I want to traverse long directory structures.

As such, I recommend rebinding C-z to Tab and viceversa. I have this in my config:

(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebind tab to do persistent action
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal
(define-key helm-map (kbd "C-z")  'helm-select-action) ; list actions using C-z
|improve this answer|||||

Your Answer

