`wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`. Why? Because `cd` seems inefficient when the folder is frequently visited or has a long path.
`wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`.
Why?
Because `cd` seems inefficient when the folder is frequently visited or has a long path.
*NEWS*: If you are not using zsh, check out the c-port, [wd-c](https://github.com/mfaerevaag/wd-c), which works with all shells using wrapper functions.
_Note: automatic install does not provide the manpage. It is also poor security practice to run remote code without first reviewing it, so you ought to look [here](https://github.com/mfaerevaag/wd/blob/master/install.sh)_
Run either command in your terminal:
```zsh
```zsh
curl -L https://github.com/mfaerevaag/wd/raw/master/install.sh | sh
curl -L https://github.com/mfaerevaag/wd/raw/master/install.sh | sh
* Add `wd` function to `.zshrc` (or `.profile` etc.):
2. Add `wd` function to `.zshrc` (or `.profile` etc.):
```zsh
```zsh
wd() {
wd() {
. ~/path/to/cloned/repo/wd/wd.sh
. ~/.local/wd/wd.sh
}
}
```
```
* Install manpage. From `wd`'s base directory (requires root permissions):
3. Install manpage (optional):
```zsh
```zsh
cp wd.1 /usr/share/man/man1/wd.1
sudo cp ~/.local/wd/wd.1 /usr/share/man/man1/wd.1
chmod 644 /usr/share/man/man1/wd.1
sudo chmod 644 /usr/share/man/man1/wd.1
```
```
**Note:** when pulling and updating `wd`, you'll need to do this again in case of changes to the manpage.
**Note:** when pulling and updating `wd`, you'll need to repeat step 3 should the manpage change
## Completion
## Completion
If you're NOT using [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) and you want to utilize the zsh-completion feature, you will also need to add the path to your `wd` installation (`~/bin/wd` if you used the automatic installer) to your `fpath`. E.g. in your `~/.zshrc`:
If you're NOT using [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) and you want to utilize the zsh-completion feature, you will also need to add the path to your `wd` installation (`~/bin/wd` if you used the automatic installer) to your `fpath`.
E.g. in your `~/.zshrc`:
```zsh
```zsh
fpath=(~/path/to/wd $fpath)
fpath=(~/path/to/wd $fpath)
@ -106,9 +123,10 @@ rm -f ~/.zcompdump; compinit
wd add foo
wd add foo
```
```
If a warp point with the same name exists, use `wd add! foo` to overwrite it.
If a warp point with the same name exists, use `wd add foo --force` to overwrite it.
**Note:** a warp point cannot contain colons, or consist of only spaces and dots. The first will conflict in how `wd` stores the warp points, and the second will conflict with other features, as below.
**Note:** a warp point cannot contain colons, or consist of only spaces and dots.
The first will conflict in how `wd` stores the warp points, and the second will conflict with other features, as below.
You can omit point name to automatically use the current directory's name instead.
You can omit point name to automatically use the current directory's name instead.
@ -118,7 +136,7 @@ rm -f ~/.zcompdump; compinit
wd foo
wd foo
```
```
* You can also warp to a directory within foo, with autocompletion:
* You can also warp to a directory within `foo`, with autocompletion:
```zsh
```zsh
wd foo some/inner/path
wd foo some/inner/path
@ -132,7 +150,7 @@ rm -f ~/.zcompdump; compinit
```
```
This is a wrapper for the zsh's `dirs` function.
This is a wrapper for the zsh's `dirs` function.
_You might need to add `setopt AUTO_PUSHD` to your `.zshrc` if you are not using [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh))._
_You might need to add `setopt AUTO_PUSHD` to your `.zshrc` if you are not using [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh)._
* Remove warp point:
* Remove warp point:
@ -142,7 +160,7 @@ rm -f ~/.zcompdump; compinit
You can omit point name to use the current directory's name instead.
You can omit point name to use the current directory's name instead.
* List all warp points (stored in `~/.warprc`):
* List all warp points (stored in `~/.warprc` by default):
```zsh
```zsh
wd list
wd list
@ -172,7 +190,7 @@ rm -f ~/.zcompdump; compinit
wd clean
wd clean
```
```
Use `wd clean!` to not be prompted with confirmation (force).
Use `wd clean --force` to not be prompted with confirmation.
* Print usage info:
* Print usage info:
@ -216,7 +234,7 @@ Defines the path where warp points get stored. Defaults to `$HOME/.warprc`.
## Testing
## Testing
`wd` comes with a small test suite, run with [shunit2](https://code.google.com/p/shunit2/). This can be used to confirm that things are working as they should on your setup, or to demonstrate an issue.
`wd` comes with a small test suite, run with [shunit2](https://github.com/kward/shunit2). This can be used to confirm that things are working as they should on your setup, or to demonstrate an issue.
To run, simply `cd` into the `test` directory and run the `tests.sh`.
To run, simply `cd` into the `test` directory and run the `tests.sh`.
@ -225,15 +243,17 @@ cd ./test
./tests.sh
./tests.sh
```
```
## License
## Maintainers
Following @mfaerevaag stepping away from active maintainership of this repository, the following users now are also maintainers of the repo:
The project is licensed under the [MIT license](https://github.com/mfaerevaag/wd/blob/master/LICENSE).
* @alpha-tango-kilo
## Contributing
* @MattLewin
If you have issues, feedback or improvements, don't hesitate to report it or submit a pull request. In the case of an issue, we would much appreciate if you would include a failing test in `test/tests.sh`. For an explanation on how to run the tests, read the section "Testing" in this README.
Anyone else contributing is greatly appreciated and will be mentioned in the release notes!
----
---
Credit to [altschuler](https://github.com/altschuler) for an awesome idea.
Credit to [altschuler](https://github.com/altschuler) for an awesome idea.