3

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

java/com/example/apple/banana/cat/dog/elephant/fig/grape/Hello.java

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
2

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.

  • 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
1

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.
  • 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
0

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

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.