はじめに
gitコマンドのtab補完を有効化する方法について記事を書いていきたいと思います。
いろいろ検証しましたが、こちらの方法が簡単だと思っています。
(brew版のgitコマンドのtab補完方法になります。)
前提
- macOSを使用予定(macOS Monterey バージョン12.4)
% sw_vers
ProductName: macOS
ProductVersion: 12.4
BuildVersion: 21F79
%
- Homebrew導入済み(バージョン 3.4.11)
% brew --version
Homebrew 3.4.11
Homebrew/homebrew-core (git revision 0416e8f4521; last commit 2022-05-30)
Homebrew/homebrew-cask (git revision 9c7cef6f71; last commit 2022-05-30)
%
- brewを用いてgit導入済み
% which git
/usr/local/bin/git
% git version
git version 2.27.0
%
- シェルはzshを使用
% which zsh
/bin/zsh
%
作業手順
ディレクトリの準備
zsh補完用のファイルを置くディレクトリを作成します。
(任意の場所で問題なし)
mkdir -p ~/.zsh/completions
作成したディレクトリに移動しておきます。
cd ~/.zsh/completions
wgetの準備
brewにwgetがインストール済みであることを確認します。
brew list | grep wget
% brew list | grep wget
wget
%
※grepでwgetがヒットしない場合は、「wgetコマンドのインストール」を参考にしてパッケージのインストールを実施します。
wgetコマンドのインストール
- wgetコマンドのインストール
brew install wget
% brew install wget
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> Updated Formulae
Updated 3 formulae.
==> Updated Casks
Updated 1 cask.
==> Downloading https://ghcr.io/v2/homebrew/core/wget/manifests/1.21.3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/wget/blobs/sha256:aa706c58ae7e9
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring wget--1.21.3.monterey.bottle.tar.gz
🍺 /usr/local/Cellar/wget/1.21.3: 89 files, 4.2MB
==> Running `brew cleanup wget`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
%
- wgetコマンドのインストール完了確認
brew list | grep wget
% brew list | grep wget
wget
%
補完ファイルのダウンロード
git-completion.bash
とgit-completion.zsh
と両方のファイルをダウンロードします。
zshに関しては、_git
というファイル名でダウンロードします。
※git-completion.bash
とgit-completion.zsh
は依存関係
- wgetにて
git-completion.bash
のダウンロード
wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
% wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
--2022-05-30 23:25:24-- https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 2606:50c0:8003::154, 2606:50c0:8001::154, 2606:50c0:8000::154, ...
raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8003::154|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 79837 (78K) [text/plain]
`git-completion.bash' に保存中
git-completion.bash 100%[===================>] 77.97K --.-KB/s 時間 0.02s
2022-05-30 23:25:25 (4.90 MB/s) - `git-completion.bash' へ保存完了 [79837/79837]
%
- wgetにて
git-completion.zsh
のダウンロード
wget -O _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
% wget -O _git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
--2022-05-30 23:25:35-- https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh
raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 2606:50c0:8003::154, 2606:50c0:8001::154, 2606:50c0:8000::154, ...
raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8003::154|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 7133 (7.0K) [text/plain]
`_git' に保存中
_git 100%[===================>] 6.97K --.-KB/s 時間 0.001s
2022-05-30 23:25:35 (10.3 MB/s) - `_git' へ保存完了 [7133/7133]
%
- ファイル確認
ダウンロードしたファイルが存在することを確認します。
ls -l ~/.zsh/completions
% ls -l ~/.zsh/completions
total 176
-rw-r--r-- 1 ma-sato staff 7133 5 30 23:25 _git
-rw-r--r-- 1 ma-sato staff 79837 5 30 23:25 git-completion.bash
%
.zshrcの編集
.zshrcを編集して、起動時にgit補完が可能にする設定を行います。
※存在しない場合は、新規で作成。
vim ~/.zshrc
※vim
が使用できない場合は、vi
を使用します。
## Git補完
fpath=(
${HOME}/.zsh/completions
${fpath}
)
autoload -Uz compinit
compinit
zshの再読み込み
以下のコマンドを実施して、zshの再読み込みを実施します。
source ~/.zshrc
※ターミナルの開き直しでもzshの再読み込みが可能
zsh compinit: insecure directoriesの警告が出た場合
以下のような警告が出ることがあります。
Last login: Tue May 31 08:42:04 on ttys000
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]? y%
%
「安全でないディレクトリ、リストに対してcompauditを実行します」という内容になります。
このような場合の対応手順は以下になります。
- 対象のディレクトリを確認
% compaudit
There are insecure directories:
/usr/local/share/zsh/site-functions
/usr/local/share/zsh
%
→2つのディレクトリが存在することを確認
-
/usr/local/share/zsh
の権限を755に変更
chmod 755 /usr/local/share/zsh/
% ls -la /usr/local/share | grep zsh
drwxr-xr-x 3 ma-sato admin 96 7 4 2020 zsh
%
権限についての説明は割愛とさせて頂きます。
- 再度、
compaudit
を実行
compaudit
% compaudit
%
→何も表示されないことを確認
さいごに
他にも方法は沢山あると思いますが、今回はgitコマンドのtab補完を有効化する方法の一例をご紹介しました。
参考記事