外部エディター
Git クライアントはコードを読む場所であって、直す場所であることはめったにありません。 差分で問題に気づいてから、エディターのその行にカーソルを置くまでの隔たりは、ファイル 検索とスクロール 1 回分 — それが毎回です。
一度 Gitcito にエディターを教えれば、その隔たりは閉じます。ファイル表示や blame の行を 右クリックすれば、その行でエディターが開きます。
選び方
設定 → 一般 → 外部エディター。 ドロップダウンには、このマシンで Gitcito が見つけ
られたエディターが並びます。まず各エディターのコマンドを探し、次に macOS では
/Applications と ~/Applications のアプリケーションバンドルを探します。この走査は
設定を開くたびに走るので、5 分前にインストールしたエディターも再起動なしに現れます。
最初から認識するもの:
| エディター | 探すコマンド |
|---|---|
| Visual Studio Code | code, code-insiders |
| Cursor | cursor |
| Windsurf | windsurf |
| Zed | zed |
| Sublime Text | subl |
| JetBrains の IDE | idea, webstorm, pycharm, rustrover, goland, clion, rider, phpstorm |
| Xcode | xed |
知っておくべき制限
行へ飛ぶにはエディターのコマンドが要ります。アイコンでは足りません。 macOS の
.app バンドルは open 経由で起動され、open はパスしか受け取りません — だから
バンドルとしてしか見つからなかったエディターはファイルを先頭から開きますし、Gitcito は
そのことをごまかさずドロップダウンの下に書きます。
直すのはエディター側です。VS Code の Shell Command: Install 'code' command in PATH、
Sublime の subl シンボリックリンク、JetBrains の Toolbox → Settings → Shell
scripts。コマンドさえできれば、あらためてエディターを選び直すと行への移動が働きます。
操作が現れる場所
| 場所 | 開くもの |
|---|---|
| リポジトリタブ、サイドバーのリポジトリ、ステータスバー | リポジトリのフォルダー |
| ファイルツリー、コミットのファイル、スタッシュのファイル、コミット作成欄 | そのファイル |
| ファイルツリーの行末のアイコン | そのファイルを、1 クリックで |
| ファイル表示 の行を右クリック | そのファイルの、その行 |
| blame 表示の行を右クリック | そのファイルの、その行 |
ファイルツリーの .xcodeproj などのパッケージ |
そのパッケージを、担当するアプリで |
行に対する操作は、行番号がまだ意味を持つ場所にだけ現れます。古いコミット時点で表示して いるファイルや、以前のリビジョンまで巻き戻した blame は、ディスク上のものと行が一致し ません。だから Gitcito は、間違った場所へ送るくらいならそこでは移動を提供しません。
Xcode プロジェクトとその他のパッケージ
MyApp.xcodeproj はディレクトリです。Git はそれを知っていて、ファイルツリー
も知っていました——それが邪魔になり始めるまでは。展開して project.pbxproj や
project.xcworkspace、xcuserdata の下の開発者ごとのフォルダを探すのは、
そもそも手で編集するつもりのなかったものに対する 3 クリック分のノイズです。
これらはパッケージのアイコンで表示され、行をクリックするとパッケージが開き
ます——Finder でダブルクリックしたときと同じです。矢印は残っているので、
project.pbxproj が本当に必要な唯一の場面——ほぼ必ずマージ衝突です——では、
これまでどおり中に降りていけます。
認識されるもの: .xcodeproj、.xcworkspace、.xcframework、.framework、
.app、.appex、.dSYM、.playground、.xcuserdatad。
意図的に認識しないもの: .xcassets と .lproj。これらもパッケージですが、
中のファイルは実際に編集されるため、畳むと得より損が大きくなります。
限界
パッケージを開くのはエディタではなくシステムです。 テキストエディタに
.xcodeproj を渡すと property list の詰まったフォルダとして開きますが、
クリックした人が求めていたのはそれではありません。そこで Gitcito は OS が
関連付けているものに渡します。Xcode が入っている Mac ならそれは Xcode です。
エディタの設定はそのままで、通常のファイルには引き続き適用されます。
これは命名規約であり、ファイルシステムのフラグではありません。 Gitcito は
拡張子を見るので、たまたま notes.app と名付けたディレクトリも畳まれますし、
これらが普通のフォルダである Linux や Windows では、クリックすると IDE では
なくファイルマネージャが開きます。
自分のコマンド
表にないものには カスタムコマンド を選んでください — ラッパースクリプト、リモート 開発のランチャー、自作のシムから起動するターミナルエディターなどです。
| 項目 | 意味 |
|---|---|
| コマンド | 実行するプログラム。シェルを通さないので &&、パイプ、グロブは使えません。 |
| 名前 | メニュー項目での呼び名。 |
| ファイル用の引数 | argv のテンプレート。例: -g {path}:{line}:{col} |
| フォルダー用の引数 | argv のテンプレート。たいていは {path} だけ |
テンプレートは空白で分割され、各トークンは 1 度だけ置き換えられます。空白を含むパスは
1 つの引数のままで、そのあと再解釈されることもないので、ファイル名が構文に化けることは
ありません。プレースホルダーは 4 つ、{path}、{line}、{col}、{repo} です。
値のないプレースホルダーは、付いているフラグごと消えます。--line {line} {path} を行
指定なしで実行すればただのパスになり、ファイル名を引数として飲み込むような宙ぶらりんの
--line が残ることはありません。{line} を含まないテンプレートは、そのエディターに
対して Gitcito が行単位の操作を出さない、というだけの意味です。
これは何ではないか
これは 「このアプリで開く」設定 ではありません。あちらはシステムの ピッカーを出し、何でも — 画像でも PDF でも Finder のフォルダーでも — 開くアプリを 1 つ覚えます。エディターのほうが対象の狭い設定なので、両方が設定されているときは ファイルツリーの行末のアイコンではエディターが勝ちます。右クリックメニューには両方とも 並んだままです。
Gitcito が勝手にエディターを起動することはありませんし、Gitcito を閉じてもエディターは 閉じません。エディターは独立したプロセスとして、切り離して起動されます。