2011-07-06 49 views
3

我裏面~/Development/[subject]_dev/[project_folder]終端工作流程快捷

因此,例如我的超級祕密的項目,我所有的代碼項目上突變體> X-武器是:

~/Development/mutants_dev/X-weapon

我想在我的項目目錄中進行更改,然後在我的Shell中隨處(任何pwd)打開TextMate中的項目。

目前我有這在我的.bashrc

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

有了這個,我型dev mutants X-Weapon,我開始在TextMate的編碼。

但是我並不完全滿意(我有時候很挑剔),我想要TAB自動完成$1$2。換句話說,我想打標籤,並有shell範圍 - 搜索我的技術(開發中的a.k.a文件夾),然後在我的項目中搜索。

舉例: dev mu[TAB]變成dev mutants,然後dev mutants X[TAB]變成......你明白了。

可能嗎?我如何設置TAB上下文? THX

回答

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

+0

B R I L L I A N N T! – microspino

1

使用BDSM「項目」和項目編輯」功能的工作流導航

安裝BDSM爲根(它安裝到/ usr /本地/ 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本身我有〜/項目/ BDSM /核心和/擴展和我分別做,

~$ p bd c 
~$ p bd e 

(我不能因爲我有一個〜/項目中使用簡單的「中國人民銀行」在這裏/ bash /目錄以及該前綴將首先匹配。)

p()和pe()應該可以在bash/zsh中工作,如果它不請讓我知道在#beginrescueend上irc.freenode.net 。

享受,

〜韋恩

參考 - https://bdsm.beginrescueend.com/bdsm/install/ - https://bdsm.beginrescueend.com/development/#沒有必要在此情況核心開發設置。

+0

請注意,其他答案回答了OP的bash選項卡問題,我從工作流的角度回答了問題,而不是更多/不同的信息。 –