設定ファイルの場所
tigのキーバインド設定は ~/.tigrc
ファイルに書く。ファイルが存在しない場合は新規作成する。
touch ~/.tigrc
キーバインドの基本構文
キーバインドの設定は以下の構文で記述する:
bind [keymap] [key] [action]
keymap
: キーが有効な画面(main、diff、logなど)key
: 割り当てるキーaction
: キーに対応するアクション
よく使うキーマップ
キーマップ(画面) | 説明 |
---|---|
generic | 全画面で有効 |
main | メイン画面(コミット一覧) |
diff | 差分の表示画面 |
log | ログ表示画面 |
tree | ツリー表示画面 |
blob | ファイル内容の表示画面 |
blame | blame表示画面 |
refs | ブランチ・タグ一覧画面 |
status | ステータス画面 |
変数
アクション内で使用できる変数は以下の通り。
変数 | 説明 | 使用可能な画面 |
---|---|---|
%(commit) | 現在選択されているコミットのハッシュ | main、log、diff |
%(branch) | 現在のブランチ名または選択されたブランチ名 | refs、main |
%(file) | 現在選択されているファイル名 | tree、blob、status |
%(directory) | 現在のディレクトリパス | tree |
%(lineno) | 現在の行番号 | blob、blame |
%(author) | コミットの作成者 | main、log |
%(date) | コミットの日付 | main、log |
%(tag) | 選択されたタグ名 | refs |
%(remote) | リモート名 | refs |
%(ref) | 選択されたリファレンス(ブランチ・タグ) | refs |
プロンプト機能
アクションで%(prompt プロンプトメッセージ)
を使用するとユーザー入力を受け取れる:
# ~/.tigrc
# ブランチ名を入力してチェックアウト
bind main S ?git switch -c "%(prompt Enter branch name: )" %(commit
変数の実用例
# ~/.tigrc
# コミット関連の変数使用例
bind main R !git reset --hard %(commit) # 選択コミットにリセット
bind main c !git cherry-pick %(commit) # 選択コミットをチェリーピック
# ブランチ関連の変数使用例
bind refs c !git checkout %(branch) # 選択ブランチをチェックアウト
bind refs p !git push origin %(branch) # 選択ブランチをプッシュ
bind refs d !git branch -d %(branch) # 選択ブランチを削除
# ファイル関連の変数使用例
bind tree o !open %(file) # 選択ファイルを外部アプリで開く
bind blob l !less %(file) # 選択ファイルをlessで表示
bind blob v !vim %(file) +%(lineno) # 選択ファイルを特定行でVimで開く
# 作成者・日付情報の活用例
bind main @ !echo "Author: %(author), Date: %(date)" # 作成者と日付を表示
bind main L !git log --author="%(author)" # 同じ作成者の他のコミットを表示
アクションの感嘆符と疑問符の違い
tigのキーバインドでコマンドを実行する際、プリフィックスによって実行方法が変わる:
プリフィックス | 動作 | 使用例 |
---|---|---|
! | 即座にコマンドを実行する | !git push origin %(branch) |
? | 実行前に確認を求める | ?git branch -d %(branch) |
感嘆符プリフィックスを使う場面
間違えて実行しても問題無い操作や、頻繁に使うコマンドに適している。
- 読み取り専用の操作:
git show
、git log
、ファイル表示 - リスク の低い操作:ファイルを外部エディタで開く
- 頻繁に使う操作:確認が煩わしい日常的なコマンド
疑問符プリフィックスを使う場面
間違えて実行すると取り返しのつかない操作や、慎重に行いたい操作に適している。
- データを変更する操作:ブランチ削除、コミットリセット
- 取り消し困難な操作:強制プッシュ、ファイル削除
- 重要な操作:マージ、リベース
カスタムキーバインド例
ブランチ操作の効率化
# ~/.tigrc
# ブランチをチェックアウト
bind refs = !git checkout %(branch)
# 現在のブランチから新しいブランチを作成
bind main B !git checkout -b %(prompt Enter branch name: )
# ブランチを削除
bind refs D !git branch -d %(branch)
コミット操作の強化
# ~/.tigrc
# コミットを修正
bind main A !git commit --amend
# インタラクティブリベース
bind main R !git rebase -i %(commit)^
# コミットをリセット(soft)
bind main S !git reset --soft %(commit)^
# コミットをリセット(hard)
bind main H !git reset --hard %(commit)^
プッシュ・プル操作
# ~/.tigrc
# 現在のブランチをプッシュ
bind generic P !git push origin %(branch)
# 強制プッシュ
bind generic F !git push --force-with-lease origin %(branch)
# プル(rebase)
bind generic U !git pull --rebase
ファイル操作
# ~/.tigrc
# ファイルをステージング
bind status a !git add %(file)
# ファイルのステージングを解除
bind status u !git reset HEAD %(file)
# ファイルの変更を破棄
bind status D !git checkout -- %(file)
外部エディタ連携
# ~/.tigrc
# 現在のファイルをエディタで開く
bind generic E !vim %(file)
# コミットメッセージを編集
bind main e !git commit --amend -m "%(prompt Enter commit message: )"
キーコンボによるキーバインド
tigでは複数キーの組み合わせ(キーコンボ)を使った効率的なキーバインドが設定できる。
ただしキーコンボが一致した時点でそのアクションが実行されるため、キーコンボを決める場合は使われていないキーを選ぶ必要がある。
例えば、s
はステータス画面の表示に使われているため、ss
のようなキーコンボは設定できない。@
のように使われていないキーをプレフィックスにするとよい。
例:
# ~/.tigrc
# Git操作系(gプリフィックス)
bind generic @gd view-diff # gd: 差分ビューを開く
bind generic @gt view-tree # gt: ツリービューを開く
bind generic @gl view-log # gl: ログビューを開く
bind generic @gb view-refs # gb: ブランチ一覧を開く
bind generic @gs view-status # gs: ステータスビューを開く
# ブランチ操作系(bプリフィックス)
bind main @bc !git checkout -b %(prompt Enter branch name: ) # bc: ブランチ作成
bind refs @bd !git branch -d %(branch) # bd: ブランチ削除
bind refs @bm !git merge %(branch) # bm: ブランチマージ
bind refs @br !git rebase %(branch) # br: ブランチリベース
# コミット操作系(cプリフィックス)
bind main @ca !git commit --amend # ca: amendコミット
bind main @cr !git revert %(commit) # cr: コミットリバート
bind main @cp !git cherry-pick %(commit) # cp: チェリーピック
bind main @cf !git commit --fixup=%(commit) # cf: fixupコミット
# プッシュ・プル系(pプリフィックス)
bind generic @pp !git push origin %(branch) # pp: プッシュ
bind generic @pf !git push --force-with-lease origin %(branch) # pf: 強制プッシュ
bind generic @pl !git pull --rebase # pl: リベースプル
bind generic @pt !git push --tags # pt: タグプッシュ
以下のようにキーコンボを考えるとよい。
- プリフィックスキーで機能をグループ化(g=Git、b=Branch、c=Commitなど)
- 直感的なセカンドキー(d=diff、t=tree、l=logなど)
- 類似操作は同じプリフィックスにまとめる
- よく使う操作は短いコンボにする
設定の確認
設定ファイルを編集した後にtigを再起動すると設定が反映される。 hキーを押してヘルプ画面を開くと、設定したキーバインドが表示される。
\第一線のプログラマーの行動原理を学べる!/