warpdir
waprdir provides shortcuts for cd under the wd alias. This is a cross-shell/cross-platform drop in replacement the zsh plugin by mfaerevaag (that is to say all of your warps are stored in ~/.warprc and are compatible with the original plugin.)
Adding warps
cd ~/some/nested/directory/thats/tedious/to/tab/complete/mydir
wd add mydir
# Successfully added mydir -> ~/some/nested/directory/thats/tedious/to/tab/complete/mydir
# Or let wd use the directory name
cd ~/some/nested/directory/thats/tedious/to/tab/complete/anotherdir
wd add
# Successfully added anotherdir -> ~/some/nested/directory/thats/tedious/to/tab/complete/anotherdir
Warp!
cd ~
wd mydir
pwd
# ~/some/nested/directory/thats/tedious/to/tab/complete/mydir
wd anotherdir
pwd
# ~/some/nested/directory/thats/tedious/to/tab/complete/anotherdir
Removing warps
wd rm mydir
wd rm anotherdir
wd mydir
# ERROR - no warp point named 'mydir'
Also check out wd help for more commands
Installing
Download and put the warpdir binary in your path (e.g. /usr/local/bin/). There is no need to rename this file to wd because the hook will install it as an alias for you.
bash
Add the following to your .bashrc or .bash_profile (OS X)
# Enable warpdir (https://9ox.org/wd-rs/)
WARPDIR=`which warpdir`
if [[ -x $WARPDIR ]]; then
eval "$(warpdir hook bash)"
fi
To enable it on existing terminals you can type source ~/.bashrc (or .bash_profile).
zsh
Enabling wd for zsh is the same process as bash. Just indicate zsh instead of bash as your argument for the hook command.
Add the following to your .zshrc
# Enable tab completion scripts. This is already done if you're using oh-my-zsh.
autoload -U compinit
compinit
# Enable warpdir (https://9ox.org/wd-rs/)
WARPDIR=`which warpdir`
if [[ -x $WARPDIR ]]; then
eval "$(warpdir hook zsh)"
fi
To enable it on existing terminals you can type source ~/.zshrc.
Emacs eshell
While wd-rs could support an eval it's probably easier in the long run to just copy the function directly.
(defun eshell/wd (&rest args)
(let ((o (with-temp-buffer
(list (apply 'call-process "warpdir" nil (current-buffer) nil args)
(buffer-string)))))
(if (= (car o) 0)
(eshell/cd (s-trim (nth 1 o)))
(nth 1 o))))