Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
acd6a14a
Commit
acd6a14a
authored
Aug 16, 2016
by
Marc Cornellà
Committed by
GitHub
Aug 16, 2016
Browse files
Merge pull request #5296 from mcornella/fix-pj-plugin
Fix pj plugin
parents
75f2f4e0
bec53135
Changes
2
Hide whitespace changes
Inline
Side-by-side
plugins/pj/README.md
0 → 100644
View file @
acd6a14a
# pj
The
`pj`
plugin (short for
`Project Jump`
) allows you to define several
folders where you store your projects, so that you can jump there directly
by just using the name of the project directory.
Original idea and code by Jan De Poorter (
[
@DefV
](
https://github.com/DefV
)
)
Source: https://gist.github.com/pjaspers/368394#gistcomment-1016
## Usage
1.
Enable the
`pj`
plugin:
```
zsh
plugins
=(
... pj
)
```
2.
Set
`$PROJECT_PATHS`
in your ~/.zshrc:
```
zsh
PROJECT_PATHS
=(
~/src ~/work ~/
"dir with spaces"
)
```
You can now use one of the following commands:
##### `pj my-project`:
`cd`
to the directory named "my-project" found in one of the
`$PROJECT_PATHS`
directories. If there are several directories named the same, the first one
to appear in
`$PROJECT_PATHS`
has preference.
For example:
```
zsh
PROJECT_PATHS
=(
~/code ~/work
)
$
ls
~/code
# ~/code/blog ~/code/react
$
ls
~/work
# ~/work/blog ~/work/project
$
pj blog
# <-- will cd to ~/code/blog
```
##### `pjo my-project`
Open the project directory with your defined
`$EDITOR`
. This follows the same
directory rules as the
`pj`
command above.
Note:
`pjo`
is an alias of
`pj open`
.
plugins/pj/pj.plugin.zsh
View file @
acd6a14a
#!/bin/zsh
alias
pjo
=
"pj open"
#
pj
()
{
# Original idea by DefV (Jan De Poorter)
emulate
-L
zsh
# Source: https://gist.github.com/pjaspers/368394#comment-1016
#
# Usage:
# - Set `$PROJECT_PATHS` in your ~/.zshrc
# e.g.: PROJECT_PATHS=(~/src ~/work)
# - In ZSH you now can open a project directory with the command: `pj my-project`
# the plugin will locate the `my-project` directory in one of the $PROJECT_PATHS
# Also tab completion is supported.
# - `pjo my-project` will open the directory in $EDITOR
#
function
pj
()
{
cmd
=
"cd"
cmd
=
"cd"
file
=
$1
project
=
$1
if
[[
"open"
==
"
$
file
"
]]
then
if
[[
"open"
==
"
$
project
"
]]
;
then
shift
shift
file
=
$*
project
=
$*
cmd
=
(
${
(s
:
:
)
EDITOR
}
)
cmd
=
${
=
EDITOR
}
else
else
file
=
$*
project
=
$*
fi
if
[[
-z
"
$project
"
]]
;
then
echo
"You have to specify a project name."
return
fi
fi
for
project
in
$PROJECT_PATHS
;
do
for
basedir
(
$PROJECT_PATHS
)
;
do
if
[[
-d
$project
/
$file
]]
then
if
[[
-d
"
$basedir
/
$project
"
]]
;
then
$cmd
"
$project
/
$file
"
$cmd
"
$basedir
/
$project
"
unset
project
# Unset project var
return
return
fi
fi
done
done
echo
"No such project
$1
"
echo
"No such project
'
${
project
}
'.
"
}
}
alias
pjo
=
"pj open"
_pj
()
{
emulate
-L
zsh
function
_pj
()
{
# might be possible to improve this using glob, without the basename trick
typeset
-a
projects
typeset
-a
projects
projects
=(
$PROJECT_PATHS
/
*
)
for
basedir
(
$PROJECT_PATHS
)
;
do
projects
=
$projects
:t
projects+
=(
${
basedir
}
/
*
(
/N
))
_arguments
"*:file:(
$projects
)"
done
}
compadd
${
projects
:t
}
}
compdef _pj pj
compdef _pj pj
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment