mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-26 21:51:05 +01:00
commit
be63e8b776
3 changed files with 65 additions and 8 deletions
|
@ -5,6 +5,8 @@ wd
|
||||||
|
|
||||||
`wd` (*warp directory*) lets you jump to custom directories in zsh, without using `cd`. Why? Because `cd` seems ineffecient 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 ineffecient when the folder is frequently visited or has a long path.
|
||||||
|
|
||||||
|
*NOTE*: If you are not using zsh, check out the `ruby` branch which has `wd` implemented as a gem.
|
||||||
|
|
||||||
|
|
||||||
### Setup
|
### Setup
|
||||||
|
|
||||||
|
@ -33,7 +35,7 @@ Run either in terminal:
|
||||||
* Add `wd` function to `.zshrc` (or `.profile` etc.):
|
* Add `wd` function to `.zshrc` (or `.profile` etc.):
|
||||||
|
|
||||||
wd() {
|
wd() {
|
||||||
. ~/paht/to/wd/wd.sh
|
. ~/path/to/cloned/repo/wd/wd.sh
|
||||||
}
|
}
|
||||||
|
|
||||||
* Install manpage. From `wd`'s base directory (requires root permissions):
|
* Install manpage. From `wd`'s base directory (requires root permissions):
|
||||||
|
@ -84,7 +86,15 @@ Also, you may have to force a rebuild of `zcompdump` by running:
|
||||||
|
|
||||||
* List all warp points (stored in `~/.warprc`):
|
* List all warp points (stored in `~/.warprc`):
|
||||||
|
|
||||||
$ wd ls
|
$ wd list
|
||||||
|
|
||||||
|
* List files in given warp point:
|
||||||
|
|
||||||
|
$ wd ls foo
|
||||||
|
|
||||||
|
* Show path of given warp point:
|
||||||
|
|
||||||
|
$ wd path foo
|
||||||
|
|
||||||
* List warp points to current directory, or optionally, path to given warp point:
|
* List warp points to current directory, or optionally, path to given warp point:
|
||||||
|
|
||||||
|
|
|
@ -20,10 +20,13 @@ function _wd() {
|
||||||
'add:Adds the current working directory to your warp points'
|
'add:Adds the current working directory to your warp points'
|
||||||
'add!:Overwrites existing warp point'
|
'add!:Overwrites existing warp point'
|
||||||
'rm:Removes the given warp point'
|
'rm:Removes the given warp point'
|
||||||
'ls:Outputs all stored warp points'
|
'list:Outputs all stored warp points'
|
||||||
'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point'
|
'ls:Show files from given warp point'
|
||||||
|
'path:Show path to given warp point'
|
||||||
'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point'
|
'show:Outputs all warp points that point to the current directory or shows a specific target directory for a point'
|
||||||
'help:Show this extremely helpful text'
|
'help:Show this extremely helpful text'
|
||||||
|
'clean:Remove points warping to nonexistent directories'
|
||||||
|
'clean!:Remove nonexistent directories without confirmation'
|
||||||
'..:Go back to last directory'
|
'..:Go back to last directory'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -47,6 +50,12 @@ function _wd() {
|
||||||
show)
|
show)
|
||||||
_describe -t points "Warp points" warp_points && ret=0
|
_describe -t points "Warp points" warp_points && ret=0
|
||||||
;;
|
;;
|
||||||
|
ls)
|
||||||
|
_describe -t points "Warp points" warp_points && ret=0
|
||||||
|
;;
|
||||||
|
path)
|
||||||
|
_describe -t points "Warp points" warp_points && ret=0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -80,7 +80,9 @@ Commands:
|
||||||
rm <point> Removes the given warp point
|
rm <point> Removes the given warp point
|
||||||
show Print warp points to current directory
|
show Print warp points to current directory
|
||||||
show <point> Print path to given warp point
|
show <point> Print path to given warp point
|
||||||
ls Print all stored warp points
|
list Print all stored warp points
|
||||||
|
ls <point> Show files from given warp point
|
||||||
|
path <point> Show the path to given warp point
|
||||||
clean! Remove points warping to nonexistent directories
|
clean! Remove points warping to nonexistent directories
|
||||||
|
|
||||||
-v | --version Print version
|
-v | --version Print version
|
||||||
|
@ -96,7 +98,7 @@ wd_exit_fail()
|
||||||
{
|
{
|
||||||
local msg=$1
|
local msg=$1
|
||||||
|
|
||||||
wd_print_msg $WD_RED $1
|
wd_print_msg $WD_RED $msg
|
||||||
WD_EXIT_CODE=1
|
WD_EXIT_CODE=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,6 +110,22 @@ wd_exit_warn()
|
||||||
WD_EXIT_CODE=1
|
WD_EXIT_CODE=1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wd_getdir()
|
||||||
|
{
|
||||||
|
local name_arg=$1
|
||||||
|
|
||||||
|
point=$(wd_show $name_arg)
|
||||||
|
dir=${point:28+$#name_arg+7}
|
||||||
|
|
||||||
|
if [[ -z $name_arg ]]; then
|
||||||
|
wd_exit_fail "You must enter a warp point"
|
||||||
|
break
|
||||||
|
elif [[ -z $dir ]]; then
|
||||||
|
wd_exit_fail "Unknown warp point '${name_arg}'"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# core
|
# core
|
||||||
|
|
||||||
wd_warp()
|
wd_warp()
|
||||||
|
@ -201,6 +219,18 @@ wd_list_all()
|
||||||
done <<< $(sed "s:${HOME}:~:g" $WD_CONFIG)
|
done <<< $(sed "s:${HOME}:~:g" $WD_CONFIG)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wd_ls()
|
||||||
|
{
|
||||||
|
wd_getdir $1
|
||||||
|
ls $dir
|
||||||
|
}
|
||||||
|
|
||||||
|
wd_path()
|
||||||
|
{
|
||||||
|
wd_getdir $1
|
||||||
|
echo $(echo $dir | sed "s:${HOME}:~:g")
|
||||||
|
}
|
||||||
|
|
||||||
wd_show()
|
wd_show()
|
||||||
{
|
{
|
||||||
local name_arg=$1
|
local name_arg=$1
|
||||||
|
@ -316,7 +346,7 @@ do
|
||||||
done < $WD_CONFIG
|
done < $WD_CONFIG
|
||||||
|
|
||||||
# get opts
|
# get opts
|
||||||
args=$(getopt -o a:r:c:lhs -l add:,rm:,clean\!,ls,help,show -- $*)
|
args=$(getopt -o a:r:c:lhs -l add:,rm:,clean\!,list,ls:,path:,help,show -- $*)
|
||||||
|
|
||||||
# check if no arguments were given, and that version is not set
|
# check if no arguments were given, and that version is not set
|
||||||
if [[ ($? -ne 0 || $#* -eq 0) && -z $wd_print_version ]]
|
if [[ ($? -ne 0 || $#* -eq 0) && -z $wd_print_version ]]
|
||||||
|
@ -349,10 +379,18 @@ else
|
||||||
wd_remove $2
|
wd_remove $2
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
-l|--list|ls)
|
-l|list)
|
||||||
wd_list_all
|
wd_list_all
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
|
-ls|ls)
|
||||||
|
wd_ls $2
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
-p|--path|path)
|
||||||
|
wd_path $2
|
||||||
|
break
|
||||||
|
;;
|
||||||
-h|--help|help)
|
-h|--help|help)
|
||||||
wd_print_usage
|
wd_print_usage
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in a new issue