forked from arrdem/zsh-goto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgoto.plugin.zsh
44 lines (38 loc) · 880 Bytes
/
goto.plugin.zsh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# goto.zsh
function _gotofile {
echo $GOTO_FILE "$HOME/.labels.tsv" "$home/.labels.tsv" | awk "{print \$1}"
}
function _makeLabel {
printf "%s %s\n" $1 $2 >> `_gotofile`
}
function label {
if [ $# -eq 0 ]
then
echo "Usage: $ label <name> [dir]"
echo " creates a label which goto can cd to"
elif [ -d "$2" ]
then
_makeLabel $1 $2
else
_makeLabel $1 $PWD
fi
}
function goto {
if [ $# -eq 0 ]
then
echo "Usage: $ goto <name>"
echo " jumps to a record set by label"
elif [[ "$1" == "ls" ]]
then
awk "{ print \$1 }" `_gotofile` | tr "\n" " " | column -t
else
cd $(awk "/^$1\s/ {print \$2;}" `_gotofile` | head -n 1)
fi
}
function _goto {
for label in $(awk '{print $1}' `_gotofile`)
do
compadd "$@" $label
done
};
compdef _goto goto