终端工作流程快捷

时间:2011-07-06 14:06:22

标签: bash shell autocomplete textmate

我的所有代码项目都在~/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

2 个答案:

答案 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/#不需要案例中的核心开发设置。