我的所有代码项目都在~/Development/[subject]_dev/[project_folder]
例如,我对突变体>的超级秘密项目X-Weapon 位于:
~/Development/mutants_dev/X-weapon
我想在我的项目目录中进行更改,并在我的Shell中的所有地方(任何密码)中以 TextMate 打开项目。
目前我在.bashrc
:
dev() { cd ~/Development/$1_dev/$2 && mate .; }
使用此类型dev mutants X-Weapon
,我开始使用 TextMate 进行编码。
但是我并不完全满意(有时候我很挑剔)我希望$1
和$2
获得TAB自动填充功能。换句话说,我想点击选项卡并将shell范围搜索到我的技术(开发中的a.k.a文件夹),然后是我的项目。
所以例如:
dev mu[TAB]
变为dev mutants
,然后dev mutants X[TAB]
变为......你明白了。
有可能吗?如何设置TAB上下文? THX
答案 0 :(得分:4)
您需要编写自己的完成功能。这是一个示例,您可以将其添加到bashrc。
_dev()
{
cur=${COMP_WORDS[COMP_CWORD]}
if [ $COMP_CWORD -eq 1 ]; then
COMPREPLY=( $(compgen -W "$(ls ~/dev)" -- $cur ) )
elif [ $COMP_CWORD -eq 2 ]; then
prev=${COMP_WORDS[COMP_CWORD-1]}
COMPREPLY=( $(compgen -W "$(ls ~/dev/$prev)" -- $cur ) )
fi
}
dev() {
cd ~/dev/$1/$2 && mate .;
}
complete -F _dev dev
工作原理:
键入dev [TAB][TAB]
时,将调用_dev()
完成功能。如果您尝试完成第一个参数,它将在dev目录中运行ls
以获取所有项目的列表。如果您要完成第二个参数,它将在项目的目录中运行ls
。
有关详细信息,请参阅本教程:Writing your own Bash Completion Function
答案 1 :(得分:1)
使用BDSM'项目'和项目编辑'功能进行工作流导航
以root用户身份安装bdsm(安装到/ usr / local / bdsm /),然后在用户的个人资料中安装
EDITOR=mate ; export EDITOR
projects_path="$HOME/Development" ; export projects_path
# This loads the interactive bdsm shell functions like 'p' and 'pe'
# which reflect on the set $projects_path and EDITOR environment variables
if [[ -s "/usr/local/bdsm/modules/shell/project/interactive" ]]
source "/usr/local/bdsm/modules/shell/project/interactive"
fi
然后在您的终端会话中,您可以快速切换到项目,
~ $ p mu X
~/Development/mutants_dev/X-weapon/ $
或者,您也可以切换终端并启动编辑器:
~ $ pe mu X
~/Development/mutants_dev/X-weapon/ $ # mate was also launched on the current directory
请注意,它会进行基于前缀的匹配,因此在projects_path中首先找到的第一个匹配前缀将是使用的。这很好,因为它可以大大减少打字。例如,当我在BDSM本身工作时,我有〜/ projects / bdsm / core和/ extensions,我可以分别做,
~$ p bd c
~$ p bd e
(我不能在这里使用'p b c',因为我还有〜/ projects / bash /目录,并且该前缀首先匹配。)
p()和pe()应该在bash / zsh中都有效,如果没有,请通过irc.freenode.net上的#beginrescueend告诉我。
享受,
〜韦恩
参考 - https://bdsm.beginrescueend.com/bdsm/install/ - https://bdsm.beginrescueend.com/development/#不需要此案例中的核心开发设置。