Внешний редактор
Git-клиент — это место, где вы читаете код; чинят его обычно не здесь. Между моментом, когда вы заметили проблему в диффе, и моментом, когда курсор стоит на той самой строке в редакторе, лежат поиск файла и прокрутка — и так каждый раз.
Один раз укажите Gitcito ваш редактор — и этот разрыв исчезает: правый клик по строке в просмотре файла или в blame открывает её прямо там, на нужной строке.
Как выбрать
Настройки → Общие → Внешний редактор. В выпадающем списке — те редакторы,
которые Gitcito нашёл на этой машине: сначала он ищет команду каждого редактора,
затем, на macOS, бандл приложения в /Applications и ~/Applications.
Сканирование выполняется при каждом открытии настроек, поэтому редактор,
установленный пять минут назад, появится без перезапуска.
Распознаются сразу:
| Редактор | Команда, которую он ищет |
|---|---|
| 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 |
Ограничение, о котором стоит знать
Для перехода на строку нужна команда редактора, а не его иконка. Бандл .app
на macOS запускается через open, который принимает путь и больше ничего — так
что редактор, найденный только как бандл, откроет файл с начала, и Gitcito прямо
говорит об этом под выпадающим списком, а не делает вид, что всё в порядке.
Лечится это на стороне редактора: в VS Code — Shell Command: Install 'code'
command in PATH, у Sublime — симлинк subl, у JetBrains — Toolbox → Settings →
Shell scripts. Как только команда появилась, выберите редактор заново — и переход
на строку заработает.
Где появляются действия
| Место | Что открывается |
|---|---|
| Вкладка репозитория, репозиторий в боковой панели, строка состояния | Папка репозитория |
| Дерево файлов, файлы коммита, файлы стеша, окно составления коммита | Этот файл |
| Иконка в конце строки в дереве файлов | Этот файл, в один клик |
| Правый клик по строке в просмотре файла | Файл, на этой строке |
| Правый клик по строке в blame | Файл, на этой строке |
.xcodeproj или другой пакет в дереве файлов |
Пакет — в приложении, которому он принадлежит |
Действия со строкой появляются только там, где номер строки ещё что-то значит: у файла, показанного на старом коммите, или у blame, отмотанного к более ранней ревизии, строки уже не совпадают с тем, что лежит на диске, — поэтому Gitcito не предлагает переход вместо того, чтобы отправить вас не туда.
Проекты Xcode и другие пакеты
MyApp.xcodeproj — это каталог. Git это знает, и дерево файлов знало тоже —
пока это не начало мешать: раскрывать его, чтобы найти project.pbxproj,
project.xcworkspace и по папке на разработчика внутри xcuserdata, — три
клика шума ради того, что вы всё равно не собирались править руками.
Теперь у них значок пакета, и клик по строке открывает пакет — так же, как
двойной клик в Finder. Стрелка осталась, поэтому в тот единственный раз, когда
project.pbxproj вам действительно нужен — почти всегда это конфликт слияния, —
вы заходите внутрь как раньше.
Распознаются: .xcodeproj, .xcworkspace, .xcframework, .framework,
.app, .appex, .dSYM, .playground, .xcuserdatad.
Не распознаются, намеренно: .xcassets и .lproj. Это тоже пакеты, но
файлы внутри действительно редактируют, так что сворачивать их — потерять
больше, чем выиграть.
Ограничения
Пакет открывает система, а не ваш редактор. .xcodeproj, отданный
текстовому редактору, открывается как папка property list-ов — не то, чего
хотел тот, кто по нему кликнул. Поэтому Gitcito передаёт его тому, что связала
с ним ОС: на Mac с установленным Xcode это Xcode. Выбор редактора не меняется и
по-прежнему действует для любого обычного файла.
Это соглашение об именах, а не флаг файловой системы. Gitcito смотрит на
расширение, так что каталог, который вы случайно назвали notes.app, тоже
свернётся, а в Linux или Windows — где это обычные папки — клик откроет файловый
менеджер вместо IDE.
Своя собственная команда
Выберите Своя команда для всего, чего нет в таблице: скрипт-обёртка, запуск удалённой разработки, терминальный редактор, поднимаемый через ваш собственный шим.
| Поле | Что означает |
|---|---|
| Команда | Исполняемый файл. Без шелла, а значит без &&, конвейеров и globs. |
| Название | Как это называется в пунктах меню. |
| Аргументы для файла | Шаблон argv, например -g {path}:{line}:{col} |
| Аргументы для папки | Шаблон argv, обычно просто {path} |
Шаблоны разбиваются по пробелам, и каждый токен подставляется ровно один раз —
путь с пробелом остаётся одним аргументом, и ничего не разбирается заново, так что
имя файла никогда не превратится в синтаксис. Четыре подстановки: {path},
{line}, {col}, {repo}.
Подстановка без значения уносит с собой свой флаг: --line {line} {path},
запущенное без строки, превращается просто в путь, а не в повисший --line,
который съел бы имя файла как свой аргумент. Шаблон без {line} просто означает,
что для этого редактора Gitcito не будет предлагать действия с точностью до
строки.
Чем это не является
Это не настройка «Открыть с помощью», которая показывает системный выбор приложения и запоминает одно приложение для открытия чего угодно — картинки, PDF, папки в Finder. Редактор — более специфичный из двух, поэтому там, где заданы оба, на иконке в конце строки в дереве файлов побеждает редактор; в контекстном меню остаются оба.
Gitcito никогда не запускает ваш редактор сам, и закрытие Gitcito не закрывает его: редактор стартует отсоединённо, как отдельный процесс.