Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
acd6a14a
Commit
acd6a14a
authored
Aug 16, 2016
by
Marc Cornellà
Committed by
GitHub
Aug 16, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5296 from mcornella/fix-pj-plugin
Fix pj plugin
parents
75f2f4e0
bec53135
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
33 deletions
+71
-33
README.md
plugins/pj/README.md
+45
-0
pj.plugin.zsh
plugins/pj/pj.plugin.zsh
+26
-33
No files found.
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