Onde posso encontrar meu arquivo .emacs para Emacs em execução no Windows?

115

Tentei procurar o arquivo .emacs para a minha instalação do Windows para Emacs, mas não consegui encontrar. Ele tem o mesmo nome de arquivo no Windows e no Unix?

Eu tenho que criar sozinho? Em caso afirmativo, em que diretório específico ele vai?

Raio
fonte

Respostas:

108

Copie e cole do FAQ do Emacs, http://www.gnu.org/software/emacs/windows/ :

Onde coloco meu arquivo init?

No Windows, o .emacsarquivo pode ser chamado _emacspara compatibilidade com os sistemas de arquivos DOS e FAT onde os nomes dos arquivos não podem começar com um ponto. Alguns usuários preferem continuar usando esse nome, porque o Windows Explorer não pode criar um arquivo com um nome que comece com um ponto, embora o sistema de arquivos e a maioria dos outros programas possam lidar com isso. No Emacs 22 e posterior, o arquivo init também pode ser chamado .emacs.d/init.el. Muitos dos outros arquivos que são criados por pacotes Lisp agora são armazenados no .emacs.ddiretório também, então isso mantém todos os seus arquivos relacionados ao Emacs em um só lugar.

Todos os arquivos mencionados acima devem ir para o diretório HOME. O diretório HOME é determinado seguindo as etapas abaixo:

  1. Se a variável de ambiente HOME estiver definida, use o diretório que ela indica.
  2. Se a entrada de registro HKCU \ SOFTWARE \ GNU \ Emacs \ HOME estiver definida, use o diretório que ela indica.
  3. Se a entrada de registro HKLM \ SOFTWARE \ GNU \ Emacs \ HOME estiver definida, use o diretório que ela indica. Não recomendado, pois resulta em usuários compartilhando o mesmo diretório HOME.
  4. Se C:\.emacsexistir, use C:/. Isso é para compatibilidade com versões anteriores, já que as versões anteriores eram padronizadas C:/se o HOME não estava definido.
  5. Use o diretório AppData do usuário, geralmente um diretório chamado Application Data no diretório do perfil do usuário, cuja localização varia de acordo com a versão do Windows e se o computador faz parte de um domínio.

No Emacs, ~no início de um nome de arquivo é expandido para seu diretório HOME, então você sempre pode encontrar seu arquivo .emacs com C-x C-f ~/.emacs.

Há mais informações em HOME e Diretórios de inicialização no MS-Windows .


fonte
1
Ou você pode precisar encontrar com Cx Cf ~ / _emacs (em vez do ponto). Usar o sublinhado para o seu init é uma prática comum (e sugerida) para o Vim e o Emacs.
labirinto de
Emacs reclama que "_emacs" está obsoleto :(
Brian Z
Obrigado. Esta explicação realmente me ajudou a configurar o emacs corretamente seguindo um tutorial do clojure, onde eles nem mencionaram isso. Criei a variável HOME no windows e agora funciona.
Siniyas de
Para mim, em referência ao seu ponto 5 acima, o diretório que o emacs está procurando por mim é C: \ Users \ userid \ AppData \ Roaming no Windows 7, mas é claro que meu computador está em um domínio.
user8128167
No Windows 10, defino a variável HOME como% USERPROFILE% para evitar o sufixo AppData.
Bae
80

Deve ser armazenado na variável user-init-file. Use C-H v user-init-file RETpara verificar. Você também pode abri-lo diretamente usandoM-x eval-expression RET (find-file user-init-file) RET

foi
fonte
8
Isso é tão útil que estou surpreso por não ser mencionado na seção do manual sobre arquivos init.
Brian Z de
Eu me pergunto por que quando tento isso, eu entendo trailing garbage following expression?
Marko Grdinic
Você usou o parêntese?
Jose Romero
29

Abra o arquivo assim no Emacs para Windows:

C-x C-f ~/.emacs

Mais informações no Wiki do Emacs

sverrejoh
fonte
11
Em seguida, clique em Arquivo> Abrir arquivo ... ou Salvar como ... para ver onde ~ / está em uma caixa de diálogo Abrir do Windows familiar.
Yoo
21

Na minha caixa do Vista está em C:\Users\<USER>\AppData\Roaming\

Alexander Kojevnikov
fonte
1
O mesmo para o Windows 8.1 (Emacs 24) com uma exceção. Quando o Emacs é aberto a partir do Windows Explorer, um link ou console cmd usa o arquivo de perfil C: \ Users \ <USER> \ AppData \ Roaming \ .emacs, mas se você abrir o Emacs do console do PowerShell, o Emacs procurará o arquivo .emacs em C : Pasta \ Usuários \ <USER>.
Kri
Isso funcionou para mim. Eu criei um arquivo .emacs no diretório Roaming no AppData e funciona perfeitamente! Windows 10.
Retro Gamer
Trabalhou no Windows 10
Alex Kaszynski
6

Observe que pode NÃO ser suficiente apenas digitar Ctrl-x Ctrl-f ~/.emacse criar o arquivo.

Pode ser que seu aplicativo Emacs use um local diferente para armazenar seu arquivo init e, se for o caso, então criar o arquivo ~ / .emacs simplesmente cria um arquivo inútil que seu aplicativo Emacs ignora.

Além disso, você pode querer fazer mais do que apenas acessar o arquivo init .emacs, mas pode querer saber onde ele está, ou seja, seu nome de caminho.

Para conseguir isso, existem dois métodos:

Maneira fácil: digite Ctrl+ H Vuser-init-fileReturn

Maneira um pouco mais complicada: você pode descobrir onde seu sistema está armazenando seu próprio arquivo .emacs:

  1. Clique em opções e role para baixo até "Definir fonte padrão ..."
  2. Altere a configuração da fonte e clique em ok
  3. No menu de opções, vá até "Salvar opções"
  4. Quando as opções são salvas, o sistema salva seu arquivo .emacs, e você pode ler o caminho do arquivo no minibuffer na parte inferior da tela do Emacs
user3020269
fonte
Consulte os documentos sobre como formatar sua resposta. É muito fácil e você ganhará mais reputação.
Bhavik Shah
Quando salvei um arquivo chamado ~ / .emacs.el, ele foi criado em c:/Users/user1/AppData/Roaming/.emacs.el. Este site emacswiki.org/emacs/DotEmacsDotD me ajudou a perceber que eu precisava nomear o arquivo, o ~/.emacs.d/init.elque significava que o arquivo no sistema de arquivos estava em c:\Users\user1\AppData\Roaming\.emacs.d\init.el(nada do que eu esperava). Eu prefiro definir a variável de ambiente HOME e colocar o arquivo em meu %USERPROFILE%diretório, que é o diretório HOME lógico do Windows (pelo menos no que me diz respeito).
PatS
4

No Windows 7, coloque seu init.elarquivo C:\Users\user-name\AppData\Roaming\.emacs.d\, onde nome de usuário é sua pasta de usuário / login.

Tome cuidado para que seu init.elarquivo não seja nomeado init.el.txt. Isso é algo que o Windows faz se você criar seu arquivo com algum editor como o Bloco de Notas.

Caisah
fonte
4

Nas versões do Emacs no Windows acima de 22, parece ter mudado para

~/.emacs.d/init.el

, ~sendo o valor de sua variável de ambiente HOME (consulte Painel de controle → SistemaAvançadoVariáveis ​​de ambiente ).

O próprio arquivo pode não existir. Nesse caso, basta criá-lo.

Gauthier
fonte
3

Você deve criar um arquivo de inicialização emacs. Um não é criado automaticamente. Eu tive um problema semelhante e essa resposta rastreia o que eu fiz.

Meu problema era que meu ~/.emacs.elarquivo não estava carregando. Estranho porque isso sempre funcionou para mim.

Esta pergunta / resposta me ajudou, mas eu tive que colocar meu arquivo init no %USERPROFILE%\AppData\Roaming\.emacs.d\init.elporque este é aparentemente o comportamento padrão no Windows.

Para solucionar isso, executei o seguinte no buffer emacs * scratch * .

user-emacs-directory
"~/.emacs.d/"

Quando vi user-emacs-directoryera ~/.emacs.d, simplesmente movi meu arquivo .emacs.el para %USERPROFILE%\.emacs.d\init.el. Mas isso ainda não funcionou. Continuei com expand-file-namecomo mostrado abaixo:

(expand-file-name user-emacs-directory)
"c:/Users/pats/AppData/Roaming/.emacs.d/"

Tenho que amar como o Windows funciona. (não) Mudei meu emacs.elarquivo para o %USERPROFILE%\AppData\Roaming\.emacs.d\init.ele funcionou. O arquivo agora estava sendo lido. Mas recebi outros erros porque meu arquivo de inicialização carregou outros arquivos (emacs pessoais) (em ~/myenv/emacs/*.el.

Warning (initialization): An error occurred while loading c:/Users/pats/AppData/Roaming/.emacs.d/init.el’:

Hum ... Parece que todos os meus arquivos ~/myenv/emacs/*.elprecisariam ser movidos para que isso funcionasse, mas eu não queria fazer isso. Então percebi que, como a variável de ambiente HOME não estava definida, o emacs estava executando seu comportamento padrão .

SOLUÇÃO

Depois de definir minha HOMEvariável de ambiente do Windows para %USERPROFILE%tudo, começou a funcionar como nos últimos 25 anos. :-)

Para definir a variável de ambiente HOME, digitei WindowsKey + "editar variáveis ​​de ambiente para sua conta" para abrir a caixa de diálogo Variáveis ​​de Ambiente e entrei HOME=%USERPROFILE%.

Agora meu arquivo de inicialização do emacs .emacs.el está de volta ao seu devido lugar $HOME/.emacs.ele não está%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

Para ser justo, se o Windows tivesse apenas um lugar para colocar os arquivos dos pacotes instalados pelo usuário, a solução de fazer HOME = %USERPROFILE\AppData\Roamingpoderia ser aceitável, mas porque alguns aplicativos usam %USERPROFILE%, alguns usam %USERPROFILE\AppData\Roaminge outros usam %USERPROFILE\AppData\Local, apenas torna difícil saber onde encontrar sua configuração arquivos.

Eu prefiro ter tudo no meu diretório% USERPROFILE% ou $ HOME.

Outra questão semelhante estava aqui:

PatS
fonte
"Tenho que amar como o Windows funciona. (Não)" - Esse problema não tem nada a ver com o Windows, a não ser isso que os desenvolvedores do Emacs têm feito com as pessoas que executam o Emacs no Windows.
Chris Charabaruk
2

Como kanja respondeu, o caminho para este arquivo é armazenado na user-init-filevariável (ou se nenhum arquivo init existir, a variável contém o valor padrão para onde criá-lo).

Portanto, independentemente de quais nomes de arquivo init possíveis você está usando e em qual diretório ele está, você deve ser capaz de visitar seu arquivo init com:

M-: (find-file user-init-file) RET

Ou exiba seu caminho completo na área de eco com:

M-: (expand-file-name user-init-file) RET

phils
fonte
2

No Emacs 23 e Windows 7, ele só funciona se você definir:

HKCU\SOFTWARE\GNU\Emacs\HOME
ex_
fonte
Finalmente encontrei isso! Obrigado!
Chris
Finalmente encontrei isso! Eu também!
lowerkey de
Por "definir", você quer dizer criar essa chave (sem conteúdo)?
Peter Mortensen,
1

Descobri que o Emacs 22 ocasionalmente abre "C: \ Documents and Settings \ username \ Application Data \ .emacs" ou apenas "C: \ Documents and Settings \ nome de usuário \ .emacs" na minha máquina XP. Eu não encontrei uma explicação de por que ele ocasionalmente muda de ideia.

~ sempre apontará para o que a instância atual do emacs pensa que é HOME, mas a dica de kanja (Ch v user-init-file) sempre dirá para onde ~ / .emacs realmente mapeia.

remcycles
fonte
2
Agora percebi que o Windows definirá a HOMEvariável de ambiente de maneira diferente, dependendo de como eu inicio runemacs.exe. Se eu iniciá-lo no Explorer, HOMEestá definido como C:\Documents and Settings\username, mas se eu iniciá-lo no menu Iniciar, HOMEestá C:\Documents and Settings\username\Application Data. Estranho.
remcycles
1

No Windows XP é:

C:\Documents and Settings\yourusernamehere\Application Data\
Urso polar
fonte
0

No Windows 8.1, se o Emacs for iniciado a partir do Windows Explorer , um atalho ou do console cmd, ele usa o arquivo init C: \ Users \ <USER> \ AppData \ Roaming.emacs . Quando eu inicio o Emacs no PowerShell, o Emacs procura seu arquivo init na pasta C: \ Users \ <USER> . A correção para esse problema foi definir a variável de ambiente do usuário HOME (Painel de Controle \ Sistema e Segurança \ Sistema-> Configurações avançadas do sistema-> Avançado-> Variáveis ​​de ambiente) para C: \ Usuários \ <USER> . Após esta mudança, não importa como eu iniciei o Emacs, ele usa o mesmo arquivo init (veja a resposta aceita para esta questão )

kri
fonte
0

Para WIndows7 e Emacs26.3:


se o HOMEambiente estiver definido, o .emacsarquivo deve estar nessa pasta.

caso contrário, deve estar em c:\.


Em ambos os casos, se .emacsnão estiver lá, _emacsdeve ser usado.

Isso ocorre porque não podemos criar .emacsarquivos de acordo com as regras de nomenclatura de arquivos do Windows (mas podemos fazer o download ou copiá-lo de outro lugar).

ZhaoGang
fonte