Editor externo
Um cliente Git é onde você lê código; raramente é onde você o conserta. A distância entre notar um problema num diff e ter o cursor naquela linha no seu editor é uma busca de arquivo e uma rolagem — toda vez.
Aponte o Gitcito para o seu editor uma vez e essa distância some: clique com o botão direito numa linha na visão de arquivo ou de blame e ela abre lá, naquela linha.
Escolhendo um
Configurações → Geral → Editor externo. O dropdown lista os editores que o
Gitcito consegue encontrar nesta máquina — ele procura primeiro pelo comando de cada
editor e depois, no macOS, pelo bundle da aplicação em /Applications e
~/Applications. A varredura roda toda vez que você abre as Configurações, então um
editor instalado cinco minutos atrás aparece sem precisar reiniciar.
Reconhecidos de fábrica:
| Editor | Comando que ele procura |
|---|---|
| Visual Studio Code | code, code-insiders |
| Cursor | cursor |
| Windsurf | windsurf |
| Zed | zed |
| Sublime Text | subl |
| IDEs da JetBrains | idea, webstorm, pycharm, rustrover, goland, clion, rider, phpstorm |
| Xcode | xed |
O limite que vale conhecer
Pular para uma linha precisa do comando do editor, não do ícone dele. Um bundle
.app do macOS é lançado através do open, que aceita um caminho e mais nada — então
um editor encontrado só como bundle abre o arquivo no topo, e o Gitcito diz isso
embaixo do dropdown em vez de fingir o contrário.
O conserto é do lado do editor: o Shell Command: Install 'code' command in PATH do
VS Code, o symlink subl do Sublime, o Toolbox → Settings → Shell scripts da
JetBrains. Assim que o comando existir, escolha o editor de novo e o pulo para a
linha funciona.
Onde as ações aparecem
| Superfície | O que ela abre |
|---|---|
| Aba do repo, repo na barra lateral, barra de status | A pasta do repositório |
| Árvore de arquivos, arquivos de commit, arquivos de stash, compositor de commit | Aquele arquivo |
| O ícone no fim da linha na árvore de arquivos | Aquele arquivo, em um clique |
| Botão direito numa linha na visão de arquivo | O arquivo, naquela linha |
| Botão direito numa linha na visão de blame | O arquivo, naquela linha |
Um .xcodeproj ou outro pacote na árvore de arquivos |
O pacote, no app que o abre |
As ações de linha só aparecem onde o número da linha ainda significa alguma coisa: um arquivo mostrado num commit antigo, ou um blame rebobinado para uma revisão anterior, tem linhas que não correspondem mais ao que está em disco, então o Gitcito não oferece pulo ali em vez de te mandar para o lugar errado.
Projetos do Xcode e outros pacotes
MyApp.xcodeproj é um diretório. O Git sabe disso, e a árvore de arquivos
também sabia — até começar a atrapalhar: expandi-lo para achar
project.pbxproj, project.xcworkspace e uma pasta por desenvolvedor dentro de
xcuserdata são três cliques de ruído por algo que você nunca ia editar na mão.
Agora eles aparecem com um ícone de pacote e clicar na linha abre o pacote,
como um duplo clique no Finder faria. A seta continua ali, então na única vez em
que você precisa do project.pbxproj — um conflito de merge, quase sempre —
você desce nele como antes.
Reconhecidos: .xcodeproj, .xcworkspace, .xcframework, .framework,
.app, .appex, .dSYM, .playground, .xcuserdatad.
Não reconhecidos, de propósito: .xcassets e .lproj. Também são pacotes,
mas as pessoas editam os arquivos lá dentro, então fechá-los custaria mais do
que economiza.
Os limites
O pacote abre pelo sistema, não pelo seu editor. Um .xcodeproj entregue a
um editor de texto abre como uma pasta de property lists, que não é o que quem
clicou queria — então o Gitcito entrega ao que o sistema associa a ele, o que num
Mac com Xcode instalado é o Xcode. Sua escolha de editor não muda; ela continua
valendo para qualquer arquivo comum.
É uma convenção de nomes, não uma marca do sistema de arquivos. O Gitcito
olha a extensão, então um diretório que você chamou de notes.app também fecha,
e no Linux ou Windows — onde são pastas comuns — clicar abre o gerenciador de
arquivos em vez de uma IDE.
Um comando seu
Escolha Comando personalizado para qualquer coisa fora da tabela — um script wrapper, um lançador de desenvolvimento remoto, um editor de terminal iniciado pelo seu próprio shim.
| Campo | Significado |
|---|---|
| Comando | O executável a rodar. Sem shell, então nada de &&, pipes ou globs. |
| Nome | Como as entradas de menu vão chamá-lo. |
| Argumentos para um arquivo | Template de argv, ex.: -g {path}:{line}:{col} |
| Argumentos para uma pasta | Template de argv, normalmente só {path} |
Os templates são divididos em espaços e cada token é substituído uma vez — um
caminho com espaço continua sendo um argumento só, e nada é re-parseado depois,
então um nome de arquivo nunca pode virar sintaxe. Quatro marcadores: {path},
{line}, {col}, {repo}.
Um marcador sem valor leva a flag dele junto: --line {line} {path} rodado sem
linha vira apenas o caminho, nunca um --line solto que engoliria o nome do arquivo
como argumento. Um template sem {line} simplesmente significa que o Gitcito não vai
oferecer ações precisas por linha para aquele editor.
O que isto não é
Isto não é a configuração de "Abrir com" um app, que mostra o seletor do sistema e lembra um app para abrir qualquer coisa — uma imagem, um PDF, uma pasta no Finder. O editor é o mais específico dos dois, então onde os dois estão configurados o editor ganha no ícone de fim de linha da árvore de arquivos; os dois continuam listados no menu de botão direito.
O Gitcito nunca lança o seu editor sozinho, e fechar o Gitcito nunca o fecha: o editor é iniciado destacado, como um processo próprio.