2015-09-21 46 views
0

這對我來說似乎很基本,但我一直無法弄清楚。所以我寫了一個完成的是自動完成我的代碼目錄,如下所示:試圖寫完成,然後cd

complete --command dev --exclusive --arguments '(__fish_complete_directories (~/Code/))' 

現在我想編寫一個函數,CD的從上方的開發完成所選目錄。

這並不工作,但我希望你明白我想要做的事:

function c 
    cd dev 
end 

所以輸入C的時候,我想我在〜/代碼/目錄選項卡中的所有目錄完成選項,然後當我選擇一個,我想我的當前路徑被帶到選定的目錄。

順便說一句 - 魚需要更多的文檔:)

+0

使用'CDPATH'變量會更容易:'set -U CDPATH。 〜/ Code' - http://fishshell.com/docs/current/commands.html#cd –

回答

2

所以你要做兩件事情:

  1. 創建一個功能c該CD的是它的參數
  2. 生成選項卡,完成c秀在〜/代碼路徑

這是簡單的:

function c 
    cd $argv 
end 

complete --command c --exclusive --arguments '(__fish_complete_directories ~/Code/)' 

我不確定dev是什麼意思,但要清楚,--command選項complete增加了完成到現有的命令。它沒有定義一個新的命令。

關於文件,有很多在http://fishshell.com/docs/current/index.html。如果您認爲需要更多報道的地區請致電https://github.com/fish-shell/fish-shell/issues

+0

非常感謝!我猜想出於某種原因,我不清楚完整的功能是否添加到現有的命令中。一定是錯過了那部分。 – nateleavitt

+0

我會補充說,添加(〜/ Code /)隱藏了製表符完成的完整路徑。所以我的完整如下: 'complete --command c --exclusive --arguments'(__fish_complete_directories(〜/ Code /))'' – nateleavitt