ReDevLab

Ghosttyキーバインド設定ガイド:基本構文から実践カスタマイズまで

Ghosttyのキーバインド設定を基本構文・プレフィックス・キーシーケンスまで体系的に解説。tmux連携やトラブルシューティングも網羅した実践ガイドです。

編集部
Ghosttyキーバインド設定ガイド:基本構文から実践カスタマイズまで

Ghosttyのキーバインド設定を基本構文から体系的にまとめました。keybind = trigger=actionの1行でショートカットを定義できます。一方でglobal:unconsumed:の使い分け、tmuxとの競合回避など、つまずきやすい点もあります。設定ファイルの準備からカスタマイズ例まで順を追って解説します。

Ghosttyの概要と設定ファイルの準備

Ghosttyは、HashiCorp共同創業者のMitchell Hashimoto氏が開発したターミナルエミュレーターです。2024年12月にMITライセンスのオープンソースとしてv1.0が公開されました。GPUアクセラレーションによる描画性能が特徴です。macOS・LinuxそれぞれのネイティブUIにも対応しています。

この記事ではGhostty v1.2.xを対象に、キーバインド設定の手順を解説します。

Ghosttyの特徴とバージョン情報

GhosttyはプラットフォームネイティブなUIを採用しています。macOSではAppKit、LinuxではGTK4を直接利用。OSの操作感を損なわず高速に描画できます。

Kitty Graphics Protocolにも対応しています。v1.2.0ではcmd+1cmd+9のタブ切り替えが追加されました。アップデートごとに機能が拡充されています。

設定ファイルの場所(macOS / Linux)

Ghosttyの設定ファイルはプレーンテキスト形式で、拡張子はありません。配置場所はOSごとに異なります。

OSパス
macOS(推奨)~/.config/ghostty/config
macOS(デフォルト)~/Library/Application Support/com.mitchellh.ghostty/config
Linux~/.config/ghostty/config

macOSでは2つのパスが使えます。~/.config/ghostty/configが優先されます。dotfiles管理との相性も良いため、こちらがおすすめです。

ファイルが存在しない場合は、手動で作成してください。

# macOS / Linux
mkdir -p ~/.config/ghostty && touch ~/.config/ghostty/config
# Windows PowerShell(WSL環境向け)
New-Item -Path "$HOME\.config\ghostty" -ItemType Directory -Force
New-Item -Path "$HOME\.config\ghostty\config" -ItemType File -Force

デフォルトキーバインドの確認とリロード方法

設定を変更する前に、現在のキーバインドを確認しておきましょう。ghostty +list-keybindsコマンドで一覧を出力できます。

# macOS / Linux
ghostty +list-keybinds
# Windows PowerShell(WSL環境向け)
wsl ghostty +list-keybinds

出力にはctrl+shift+c = copy_to_clipboardのような形式で、現在有効なバインドがすべて表示されます。

設定ファイルを編集したあとは、リロードで反映できます。macOSではcmd+shift+,、Linuxではctrl+shift+,がデフォルトのリロードキーです。ターミナルを再起動する必要はありません。

すべてのデフォルトキーバインドを白紙にしたい場合は、設定ファイルの先頭に以下を記述します。

# config ファイルの先頭に記述
keybind = clear

この1行で全デフォルトバインドが解除され、自分だけのキーマップをゼロから構築できます。

キーバインドの基本構文とモディファイアキー

Ghosttyのキーバインドはkeybind = trigger=actionというシンプルな1行で定義します。設定ファイルに書き足すだけで反映でき、複雑なスクリプトは不要です。ここでは基本構文からよく使う設定例までを紹介します。

trigger=action形式の書き方

キーバインドの構文は「トリガー(押すキー)」と「アクション(実行される操作)」を=で結ぶ形式です。

keybind = trigger=action

たとえば、Ctrl+Zでターミナルを閉じたい場合は次のように書きます。

keybind = ctrl+z=close_surface

keybind =のあとにスペースを入れます。トリガーとアクションは=で直結させてください。複数のキーバインドは1行に1つずつ記述します。

keybind = ctrl+z=close_surface
keybind = ctrl+t=new_tab
keybind = ctrl+shift+r=reload_config

既存のデフォルト設定を無効にしたいときは、アクションにunbindを指定します。

keybind = ctrl+z=unbind

モディファイアキー(shift / ctrl / alt / super)の指定

トリガーに使えるモディファイアキーは4種類です。OSによってエイリアスが異なります。

モディファイアエイリアス対応キー
shiftShift
ctrlcontrolControl
altopt, optionAlt / Option
supercmd, commandSuper / Command

モディファイアは+で連結して複数指定できます。

keybind = ctrl+shift+t=new_tab
keybind = super+alt+f=toggle_fullscreen

macOSではsuperの代わりにcmdが直感的です。どのエイリアスを使っても動作は同じです。

実践例:よく使うキーバインドの設定

筆者が使っている設定を抜粋します。そのまま追記すれば動作します(v1.1以降で確認済み)。

# ~/.config/ghostty/config

# タブ操作
keybind = ctrl+shift+t=new_tab
keybind = ctrl+shift+w=close_surface

# フォントサイズ調整
keybind = super+plus=increase_font_size:1
keybind = super+minus=decrease_font_size:1
keybind = super+zero=reset_font_size

# スクロール
keybind = shift+page_up=scroll_page_up
keybind = shift+page_down=scroll_page_down
keybind = shift+home=scroll_to_top
keybind = shift+end=scroll_to_bottom

# 設定リロード(編集後すぐ反映)
keybind = ctrl+shift+comma=reload_config

設定後はリロードキーで即座に反映されます。現在有効なキーバインドを確認するには次のコマンドです。

# macOS / Linux
ghostty +list-keybinds
# Windows PowerShell(将来のWindows対応時)
ghostty +list-keybinds

不要なデフォルト設定はunbindで無効化できます。

プレフィックスとキーシーケンスによる高度な制御

プレフィックスを付けると適用範囲や挙動を細かく制御できます。キーシーケンスでtmuxライクな操作も再現可能です。

4種類のプレフィックス(global / all / unconsumed / performable)

Ghosttyには4つのプレフィックスがあり、トリガーの前に付けて使います。

keybind = [プレフィックス:]トリガー=アクション

global: はバックグラウンドでも動作するバインドです。macOS専用でアクセシビリティ権限が必要です。

all: は全サーフェスにアクションを適用します。通常はフォーカス中のサーフェスだけが対象です。

unconsumed: はキー入力を消費しません。エンコードした値をプログラムにそのまま渡します。

performable: はアクションが実行可能なときだけ入力を消費します。performable:ctrl+c=copy_to_clipboardなら、選択中はコピー、選択なしは通常のCtrl+Cです。

プレフィックスは組み合わせ可能です。global:all:ctrl+shift+q=quitのように:で連結します。

キーシーケンスでtmux風プレフィックスキーを実装する

>演算子で2段階以上の連続キー入力をトリガーにできます。tmuxのCtrl+bに続くキー操作をGhosty単体で再現できます。

# ~/.config/ghostty/config に追加
# Ctrl+a をプレフィックスとして使う例
keybind = ctrl+a>c=new_window
keybind = ctrl+a>n=goto_tab:next
keybind = ctrl+a>p=goto_tab:previous
keybind = ctrl+a>v=new_split:right
keybind = ctrl+a>s=new_split:down

Ctrl+acで新しいウィンドウが開きます。tmuxなしでタブ切り替えやペイン分割が可能です。SSH先でも追加設定は不要です。

macOSアクセシビリティ権限の設定手順(global:使用時)

global:を使うにはアクセシビリティ権限が必要です。

  1. システム設定を開く — 「システム設定」→「プライバシーとセキュリティ」→「アクセシビリティ」へ進みます
  2. Ghosttyを追加する — 左下の「+」ボタンをクリックし、/Applications/Ghostty.appを選択します
  3. トグルをオンにする — 一覧に表示されたGhosttyのスイッチを有効にします
  4. Ghosttyを再起動する — 権限変更を反映するため、Ghosttyを一度終了して再度起動してください

設定後、以下のようにglobal:バインドが機能するか確認します。

# 設定例: どのアプリからでもGhosttyを呼び出す
keybind = global:ctrl+shift+t=toggle_quick_terminal
# 現在のキーバインドを確認
ghostty +list-keybinds

権限を付与するとシステム全体のキーイベントを取得します。信頼できるバージョンのみに許可してください。

実践的なカスタマイズ例と他ターミナルからの移行

自分の作業スタイルに合わせた柔軟なカスタマイズが可能です。実務向けの設定パターンと移行のポイントを紹介します。

デフォルトリセット・Vimスタイル・日本語キーボード向け設定

白紙からキーバインドを組み立てるにはkeybind = clearを記述します。全デフォルトが削除され、必要なものだけ定義できます。

# ~/.config/ghostty/config

# デフォルトキーバインドを全削除
keybind = clear

# Vimスタイルのスプリット操作
keybind = ctrl+shift+h=goto_split:left
keybind = ctrl+shift+l=goto_split:right
keybind = ctrl+shift+j=goto_split:bottom
keybind = ctrl+shift+k=goto_split:top

# スプリットの作成
keybind = ctrl+shift+s=new_split:right
keybind = ctrl+shift+v=new_split:down

# 日本語キーボード向け: 設定リロード
keybind = ctrl+shift+r=reload_config

keybind = clear使用時はコピー&ペーストも再定義が必要です。ghostty +list-keybindsで反映を確認してください。

tmuxユーザー向けの競合回避(v1.2.0のcmd+数字キー問題)

v1.2.0でcmd+1〜cmd+9が追加されました。tmuxのウィンドウ切り替えと競合します。以下で解消できます。

# tmuxのプレフィックスキーと競合するキーを無効化
keybind = cmd+one=unbind
keybind = cmd+two=unbind
keybind = cmd+three=unbind
keybind = cmd+four=unbind
keybind = cmd+five=unbind
keybind = cmd+six=unbind
keybind = cmd+seven=unbind
keybind = cmd+eight=unbind
keybind = cmd+nine=unbind

unbindでキー入力がtmuxへ渡ります。面倒ならkeybind = clearで一括リセットも有効です。

Alacritty / Kitty / WezTermからの移行ポイント

他ターミナルとは構文が異なり、機械的な変換はできません。主な違いをまとめました。

項目AlacrittyKittyWezTermGhostty
設定形式YAML独自構文Lua独自構文
キーバインド記法key_bindings:map key actionkeys = {}keybind = trigger=action
シーケンスキー非対応非対応Lua関数で実装>演算子で対応
プレフィックス制御なしなしなしglobal: all:

Ghostty独自の強みは>演算子とperformable:プレフィックスです。Kittyのmap ctrl+shift+t new_tabkeybind = ctrl+shift+t=new_tabと書き換えます。WezTermのLua条件分岐もperformable:で簡潔に表現できます。

まとめ:自分だけのキーマップを育てる次のステップ

まずghostty +list-keybindsで現状を把握してください。keybind = clearで白紙にするか、デフォルトを活かすか決めます。方針が定まったらtrigger=action構文やプレフィックスを組み合わせましょう。

設定ファイルは~/.config/ghostty/configに置くとdotfilesで管理できます。git clone一発で同じキーマップを再現できるのが利点です。

さらに踏み込みたい方は以下のリソースが参考になります。

Ghosttyは活発に開発が続いています。リリースノートを定期的にチェックしておきましょう。

参考文献

s

この記事を書いた人

数学科出身のWebエンジニア

共有: