Como posso usar o emacs com git dentro do terminal?
On Dezembro 31, 2020 by admin Eu usei git config --global core.editor emacs
para definir meu editor git como emacs, mas quando faço isso e envio algo, editor abre uma nova janela em vez de abrir o emacs dentro do terminal. Eu quero usar o emacs como se -nw fosse fornecido a ele, mas escrever isto -> git config --global core.editor emacs -nw
não é a solução.
Eu preciso usar o git básico por enquanto.
Comentários
- Você conhece o magit? Ele faz a operação básica do git uma brisa de dentro do Emacs. magit.vc
- Sim. Não posso ' usá-lo por enquanto. Depois que a aula terminar, eu ' vou subir de nível para magit.
- Você deve descrever o que acontece quando você adiciona " -nw " em vez de simplesmente declarar que " não é a solução ". Funciona para mim, quando o comando é escapado corretamente.
Resposta
Quando você executa git config --global core.editor emacs -nw
, seu shell divide a linha de comando em palavras antes de invocar git. Git, portanto, vê “emacs -nw” como dois argumentos separados. Ele só precisa de um para colocar no arquivo de configuração, então o outro é ignorado. (Na verdade, isso “é uma mentira, mas você pode verificar a página do manual para obter detalhes.) Você pode colocar aspas em uma série de palavras para dizer ao seu shell para não quebrá-las: git config --global core.editor "emacs -nw"
irá dê “emacs -nw” para git como um único argumento que fará o que você quiser.
Resposta
Você não especifica o que há de errado em abrir uma nova janela GUI do emacs. Se o problema for o longo tempo de inicialização, você pode considerar usar o emacsclient como seu editor. Resumindo, você executa (server-start)
em seu arquivo init do emacs e mantém seu emacs GUI normal aberto, e então diz ao git para usar um editor chamado emacsclient. O que acontece é que o arquivo editado aparece em um novo buffer no seu emacs em execução. Depois de terminar, pressione C-x #
para terminar a sessão do emacsclient e então git (ou outro processo shell que iniciou o editor) sabe que o editor “emacsclient” terminou com o arquivo e continua com sua coisa. (“emacsclient” também é uma palavra, por isso também resolve o seu problema imediato)
Mesmo quando a edição deve ser feita na janela do terminal, você pode executar emacsclient -nw
e elimine o longo tempo de inicialização. Existem mais possibilidades, man emacsclient
é uma boa leitura.
Comentários
- (seria ' Fui melhor como um comentário na resposta acima, mas não tenho permissão para postar comentários)
- Eu ' estive procurando em todos os lugares por isso, totalmente feliz que ' é uma resposta 🙂
- O principal problema que tenho é que não ' t sempre retorna o foco para o terminal após sair do emacs. Existem situações em que o foco nunca é retornado, como quando você tem uma janela definida como sempre no topo, essa janela parece prender o foco após sair do emacs.
Deixe uma resposta