Рабочие инструменты

Внешний редактор

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 не закрывает его: редактор стартует отсоединённо, как отдельный процесс.

Улучшить этот перевод на GitHub