指令列完成

您可以在 Bash 和 Zsh 中啟用指令列完成功能 (也稱為分頁完成)。這可讓您以 Tab 鍵完成指令名稱、旗標名稱和旗標值,以及目標名稱。

Bash

Bazel 提供 Bash 完成指令碼。

如果您已安裝 Bazel:

  • 您可以從 APT 存放區完成,Bash 完成指令碼已安裝在 /etc/bash_completion.d 中。

  • 在 Homebrew 上,您已完成 -- Bash 完成指令碼已安裝在 $(brew --prefix)/etc/bash_completion.d 中。

  • 從從 GitHub 下載的安裝程式中,然後:

    1. 找出完成檔案的絕對路徑。安裝程式已將該檔案複製到 bin 目錄。

      例如:如果您使用 --user 執行安裝程式,它會是 $HOME/.bazel/bin。如果以 Root 權限執行安裝程式,則這會是 /usr/local/lib/bazel/bin

    2. 請執行下列任一步驟:

      • 請將這個檔案複製到完成目錄 (如果有的話)。

        例如:在 Ubuntu 中,這是 /etc/bash_completion.d 目錄。

      • 或從 Bash 的 RC 檔案中取得完成檔案。

        使用完成檔案絕對路徑的路徑,為 ~/.bashrc (在 Ubuntu) 或 ~/.bash_profile (macOS 上) 新增類似下方的行:

        source /path/to/bazel-complete.bash
        
  • 經由啟動程序,接著:

    1. 建構完成指令碼:

      bazel build //scripts:bazel-complete.bash
      
    2. 完成檔案會在 bazel-bin/scripts/bazel-complete.bash 中建構。

      請執行下列任一步驟:

      • 請將這個檔案複製到完成目錄 (如果有的話)。

        範例:在 Ubuntu 中,這是 /etc/bash_completion.d 目錄

      • 請將檔案複製到本機磁碟的其他位置 (例如 $HOME),然後從 Bash 的 RC 檔案中擷取完成檔案。

        使用完成檔案絕對路徑的路徑,為 ~/.bashrc (在 Ubuntu) 或 ~/.bash_profile (macOS 上) 新增類似下方的行:

        source /path/to/bazel-complete.bash
        

Zsh

Bazel 隨附 Zsh 完成指令碼。

如果您已安裝 Bazel:

  • 您可以從 APT 存放區完成,也就是 /usr/share/zsh/vendor-completions 中已安裝 Zsh 完成指令碼。

    如果您高度自訂了 .zshrc,但自動完成功能無法運作,請嘗試下列其中一種解決方案:

    將以下項目新增至 .zshrc

        zstyle :compinstall filename '/home/tradical/.zshrc'
    
        autoload -Uz compinit
        compinit
    

    請按照這裡的說明操作。

    如果您使用的是 oh-my-zsh,建議安裝並啟用 zsh-autocomplete 外掛程式。如果您不想這麼做,請使用上述其中一個解決方案。

  • 在 Homebrew 上,您已完成 -- Zsh 完成指令碼已安裝在 $(brew --prefix)/share/zsh/site-functions 中。

  • 從從 GitHub 下載的安裝程式中,然後:

    1. 找出完成檔案的絕對路徑。安裝程式已將該檔案複製到 bin 目錄。

      例如:如果您使用 --user 執行安裝程式,它會是 $HOME/.bazel/bin。如果以 Root 權限執行安裝程式,則這會是 /usr/local/lib/bazel/bin

    2. 將此指令碼新增至 $fpath 的目錄:

      fpath[1,0]=~/.zsh/completion/
      mkdir -p ~/.zsh/completion/
      cp /path/from/above/step/_bazel ~/.zsh/completion
      

      您可能需要第一次呼叫 rm -f ~/.zcompdump; compinit 才能正常運作。

    3. 視需要在 .zshrc 中新增下列內容。

      # This way the completion script does not have to parse Bazel's options
      # repeatedly.  The directory in cache-path must be created manually.
      zstyle ':completion:*' use-cache on
      zstyle ':completion:*' cache-path ~/.zsh/cache