Como posso usar o emacs com git dentro do terminal?


9

Eu costumava git config --global core.editor emacsdefinir meu editor de git como emacs, mas quando faço isso e comprometo algo, o editor abre uma nova janela em vez de abrir o emacs dentro do terminal. Eu quero usar o emacs como se -nw fosse dado a ele, mas escrever isso -> git config --global core.editor emacs -nwnão é a solução.

Eu preciso usar o git básico por enquanto.


2
Você conhece magit? Faz com que a operação básica do git seja fácil no Emacs. magit.vc
Tyler

2
Sim. Não pode usá-lo por enquanto. Depois que a aula terminar, eu vou subir de nível.
Lib101 29/03/16

Você deve descrever o que acontece quando adiciona "-nw" em vez de simplesmente afirmar que "não é a solução". Funciona para mim, quando o comando é escapado corretamente.
asjo 29/03

Respostas:


19

Quando você executa git config --global core.editor emacs -nw, seu shell divide a linha de comando em palavras antes de chamar o git. Assim, o Git vê "emacs -nw" como dois argumentos separados. Ele precisa apenas de um para colocar no arquivo de configuração, para que o outro seja ignorado. (Na verdade, isso é mentira, mas você pode verificar a página de manual para obter detalhes.) Você pode colocar aspas em torno de uma série de palavras para dizer ao seu shell para não desmembrá-las: git config --global core.editor "emacs -nw"dará ao "emacs -nw" git como um argumento único que fará o que você quiser.


2

Você não especifica o que há de errado em abrir uma nova janela do GUI emacs. Se o problema for o longo tempo de inicialização, considere usar o emacsclient como seu editor. Em poucas palavras, você executa (server-start)o arquivo init do emacs e mantém o emacs da 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, você pressiona C-x #para finalizar a sessão do emacsclient e, em seguida, o git (ou outro processo de shell que iniciou o editor) sabe que o editor "emacsclient" termina o arquivo e continua com ele. ("emacsclient" também é uma palavra, por isso também resolve seu problema imediato)

Mesmo quando a edição precisa ser feita na janela do terminal, você pode executar emacsclient -nwe eliminar o longo tempo de inicialização. Existem mais possibilidades, man emacsclienté uma boa leitura.


11
(teria sido melhor como um comentário sobre a resposta acima, mas não tem permissão para postar comentários)
Ury Marshak

Eu estive procurando por toda parte para este, totalmente feliz é uma resposta :)
AER
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.