Терминал рабочего процесса ярлык - PullRequest
3 голосов
/ 06 июля 2011

У меня есть все мои проекты кода внутри ~/Development/[subject]_dev/[project_folder]

Так, например, мои сверхсекретные проекты по мутантам> X-Weapon находятся по адресу:

~/Development/mutants_dev/X-weapon

Я хотел бы изменить каталог своего проекта и открыть проект в TextMate отовсюду (любой pwd) в моей командной консоли.

В настоящее время у меня есть это вmy .bashrc:

dev() { cd ~/Development/$1_dev/$2 && mate .; }

С этим i я набираю dev mutants X-Weapon, и я начинаю кодировать в TextMate .

Однако я не полностью удовлетворен (ям привыкает иногда) и я хотел бы иметь автозаполнение TAB для $1 и $2.Другими словами, я хотел бы перейти на вкладку и выполнить поиск по оболочке в моих технологиях (или папках внутри разработки), а затем в моих проектах.

Так, например: dev mu[TAB] становится dev mutants, а затемdev mutants X[TAB] становится ... Вы получаете это.

Возможно ли это?Как я могу установить контекст TAB?THX

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Вам нужно написать собственную функцию завершения.Вот пример, который вы можете добавить к своему 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()функция вызывается.Если вы пытаетесь завершить первый аргумент, он запускает ls в каталоге dev, чтобы получить список всех проектов.Если вы пытаетесь завершить второй аргумент, он запускает ls в каталоге проекта.

Для получения дополнительной информации посмотрите этот учебник: Написание собственной функции завершения Bash

1 голос
/ 06 июля 2011

Используйте функции BDSM 'project' и edit project 'для навигации рабочего процесса

Установите bdsm от имени пользователя root (он устанавливается в / 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.Это хорошо, так как это может значительно сократить набор текста.Например, когда я работаю над самим БДСМ, у меня есть ~ / projects / bdsm / core и / extensions, и я могу соответственно сделать

~$ p bd c
~$ p bd e

(я не могу просто использовать здесь «pbc», так как у меня есть ~Каталог / projects / bash /, и этот префикс должен совпадать первым.)

p () и pe () должны работать как в bash / zsh, если это не помогло, дайте мне знать в #beginrescueend на irc.freenode.net.

Наслаждайтесь,

~ Уэйн

Ссылки - https://bdsm.beginrescueend.com/bdsm/install/ - https://bdsm.beginrescueend.com/development/ # не требуется настройка ядра устройства в это чехол.

...