Like any developer, I have amassed an impressive collection of directory trees
both broad and deep. Navigating these trees became increasingly cumbersome,
CDPATH, using auto-completion, and working with the readline
history search alleviated this only somewhat.
autojump, from the package of the same name.
Whatever magic it uses is unbelievably effective. I estimate that in at least
95% of my cases, typing
j <name-fragment> changes to the directory I
was actually thinking of.
Say I'm working on package
scikit-learn. My clone of the Salsa repo is
~/code/pkg-scikit-learn/scikit-learn. Changing to that directory is
trivial, I only need to specify a name fragment:
$ j sci /home/christian/code/pkg-scikit-learn/scikit-learn christian@workstation:~/code/pkg-scikit-learn/scikit-learn
But what if I want to work on scikit-learn upstream, to prepare a patch, for
example? That repo has been cloned to
problem at all, just add another name fragment:
$ j gi sci /home/christian/code/github/scikit-learn christian@workstation:~/code/github/scikit-learn
The magic, however, is most evident with directory trees I rarely enter. As in:
I have a good idea of the directory name I wish to change to, but I don't
really recall its exact name, nor where (in the tree) it is located. I used
to rely on autocomplete to somehow get there which can involve hitting the
[TAB] key far too many times, and falling back to
find in the worst
case, but now,
autojump always seems gets me there on first try.
I can't believe that this has been available in Debian for 10 years and I only discovered it now.