シェルインテグレーション
いくつかの Ghostty 機能はシェルとの統合を必要とします。Ghostty は bash、elvish、fish、nushell、zsh に対してシェルインテグレー ションを自動的に注入できます。
- カーソルがプロンプト位置にある端末は、閉じる前に確認しません。
- 新しい端末は、直前にフォーカスされていた端末の 作業ディレクトリで開始します。
- 複雑なプロンプトは、プロンプト行を reflow せずに redraw させることで 正しくリサイズします。
- control(Linux)または command(macOS)を押しながらの トリプルクリックで、コマンドの 出力を選択できます。
- プロンプト位置のカーソルはより標準的な テキスト編集を表す縦棒になります。
jump_to_promptキーバインドを使うと、端末ウィンドウを プロンプトごとに前後にスクロールできます。- Alt+クリック(macOS では option+クリック)で、プロンプト上の クリックした位置に カーソルを移動できます。
sudoを自動的にラップして Ghostty の terminfo を保持 (既定では無効)sshを自動的にラップして、リモート端末の環境を 正しく設定。詳細は SSH を参照 (既定では無効)。
Ghostty は bash、elvish、fish、
nushell、zsh に対し
シェルインテグレーションのコードを自動注入します。
Note
macOS が同梱する Bash(
/bin/bash)は 自動シェルインテグレーションに対応していません。シェル インテグレーションスクリプトを自分で読み込む (下記参照)必要があります。Homebrew などから通常版の Bash を インストールし、シェルとして設定してもよいです。
他のシェルにはシェルインテグレーションコードが用意されていません が、Ghostty 内ではそれらも問題なく動作します。ただし 上述した一部またはすべての シェルインテグレーション機能は 使えないかもしれません。
Nushell はこれらの機能の
多く(タイトルやカーソルの扱いなど)を
自身で備えているため、Nushell の Ghostty 統合は
sudo、ssh-env、ssh-terminfo といった
Ghostty 固有の機能に焦点を当てています。同様に新しいバージョンの Fish(4.0+)
はプロンプトマーキングの組み込みサポートを持つため、jump_to_prompt、
プロンプトのリサイズ、
プロンプトの選択はシェルインテグレーションなしでも
動作します。
Ghostty は、実行するコマンドの basename に対する
単純な文字列照合でシェルを検出します。サポート
シェルと別の名前で使っている場合は、
shell-integration 設定オプションで
シェルインテグレーションを強制できます:
shell-integration = fish
自動シェルインテグレーションを無効化したい 場合:
shell-integration = none
シェルインテグレーションが動作しているか確かめるには 、次のログ行を探してください:
info(io_exec): using Ghostty resources dir from env var: /Applications/Ghostty.app/Contents/Resources
info(io_exec): shell integration automatically injected shell=termio.shell_integration.Shell.fish
次のようなものが見つかった場合は、正常動作して
いません。その主な原因は多くの場合、GHOSTTY_RESOURCES_DIR が正しい
場所を指していないことです。
ghostty terminfo not found, using xterm-256color
shell could not be detected, no automatic shell integration will be injected
自動シェルインテグレーションを動作させるには、Ghostty を macOS
アプリバンドルから実行するか、Ghostty の実行場所の
上位ディレクトリに zig-out/share の中身が
ある場所に
インストールされている必要があります。
Linux では、zig-out
のディレクトリツリー(標準的な FHS ツリー)から実行するか、
-p 経由で適切にインストールされた場所から実行
した場合に自動的
にはたらきます(参照
ソースからのビルド)。
また、GHOSTTY_RESOURCES_DIR を手動で設定し、zig-out/share/ghostty の中身を
指せることもできます。このディレクトリの検証には、ファイル
$GHOSTTY_RESOURCES_DIR/../terminfo/ghostty.terminfo の存在が必要です。
ただし、この環境変数を手動
で設定しなければならないということは、別のところに問題が
あるということの赤
旗であり、
さらに調査してください。
シェルインテグレーションは、シェル設定の中で 手動で読み込むこともできます。これにより (Ghostty 内でシェルを切り替えるときな ど)、より多くのシナリオでシェル インテグレーションが使えることを保証します。
Ghostty は起動時に GHOSTTY_RESOURCES_DIR
環境変数を
自動的に設定します。これを使って (1) シェルが Ghostty 内で
起動されたことを検出し、(2) シェル
インテグレーションのありかを
見つけられます。
たとえば bash の場合、~/.bashrc の 先頭に 次を書き
ます:
# Ghostty shell integration for Bash. This should be at the top of your bashrc!
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
fi
Note
技術 的には、bashシェルインテグレーション スクリプトはどこからでも参照できますが、一部の bash 設定がでシェル インテグレーションを妨げる 可能性があります。これを回避するには、 シェル設定のなるべく早い段階で スクリプトをお読み込みください。
各シェルの インテグレーション手順はインラインで文書化されています:
| シェル | インテグレーション |
|---|---|
bash | ${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash |
elvish | ${GHOSTTY_RESOURCES_DIR}/shell-integration/elvish/lib/ghostty-integration.elv |
fish | "$GHOSTTY_RESOURCES_DIR"/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish |
nushell | $GHOSTTY_RESOURCES_DIR/shell-integration/nushell/vendor/autoload/ghostty.nu |
zsh | ${GHOSTTY_RESOURCES_DIR}/shell-integration/zsh/ghostty-integration |
シェル固有の詳細は shell-integration/README.md を参照してください。
前の節 で説明した自動シェルインテグレーションは、Ghostty 起動時の 最初に起動されたシェル でのみ機能 します。
Ghostty 内でシェルを切り替える場合、つまり手動で bash を実行するか
、nix-shell のようなコマンド
を使うと、そのシェルでは シェル
インテグレーションが失われます(元
のシェルプロセスでは引き続き機能します)。
これらのシナリオでシェルインテグレーション を機能させるには、前の節で説明した ように Ghostty 固有シェル のコードを手動で読み込む必要があります。
ssh-env と ssh-terminfo シェルインテグレーション
機能は、対話シェルの中の ssh を
ラップし、Ghostty の
+ssh CLI
アクションを透過的に呼び出せるようにします。これにより
、ssh を介して
動作するアプリが正しく実行できるようリモート端末
環境を設定
します。
+ssh を対話シェルの外から直接使う方法
を含む詳細は SSH を
参照してください。