Di mana saya dapat menemukan file .emacs saya untuk Emacs yang berjalan di Windows?


115

Saya mencoba mencari file .emacs untuk instalasi Windows saya untuk Emacs, tetapi saya tidak dapat menemukannya. Apakah itu memiliki nama file yang sama di bawah Windows seperti di Unix?

Apakah saya harus membuatnya sendiri? Jika ya, di bawah direktori spesifik apa ia masuk?

Jawaban:


108

Salin dan tempel dari FAQ Emacs, http://www.gnu.org/software/emacs/windows/ :

Di mana saya meletakkan file init saya?

Pada Windows, .emacsfile mungkin dipanggil _emacsuntuk kompatibilitas dengan sistem file DOS dan FAT di mana nama file tidak dapat dimulai dengan titik. Beberapa pengguna lebih memilih untuk terus menggunakan nama seperti itu, karena Windows Explorer tidak dapat membuat file dengan nama yang dimulai dengan titik, meskipun sistem file dan sebagian besar program lain dapat menanganinya. Di Emacs 22 dan yang lebih baru, file init juga dapat dipanggil .emacs.d/init.el. Banyak file lain yang dibuat oleh paket Lisp sekarang disimpan di .emacs.ddirektori juga, jadi ini menyimpan semua file terkait Emacs Anda di satu tempat.

Semua file yang disebutkan di atas harus masuk ke direktori HOME Anda. Direktori HOME ditentukan dengan mengikuti langkah-langkah di bawah ini:

  1. Jika variabel lingkungan HOME disetel, gunakan direktori yang diindikasikannya.
  2. Jika entri registri HKCU \ SOFTWARE \ GNU \ Emacs \ HOME diatur, gunakan direktori yang ditunjukkan.
  3. Jika entri registri HKLM \ SOFTWARE \ GNU \ Emacs \ HOME diatur, gunakan direktori yang ditunjukkan. Tidak disarankan, karena mengakibatkan pengguna berbagi direktori HOME yang sama.
  4. Jika C:\.emacsada, maka gunakan C:/. Ini untuk kompatibilitas mundur, karena versi sebelumnya C:/ditetapkan secara default jika HOME tidak disetel.
  5. Gunakan direktori AppData pengguna, biasanya direktori yang disebut Data Aplikasi di bawah direktori profil pengguna, lokasinya bervariasi sesuai dengan versi Windows dan apakah komputer merupakan bagian dari domain.

Dalam Emacs, ~di awal sebuah nama file diperluas ke direktori HOME Anda, sehingga Anda selalu dapat menemukan file .emacs Anda dengan C-x C-f ~/.emacs.

Ada informasi lebih lanjut di HOME dan Direktori Startup di MS-Windows .


1
Atau Anda mungkin perlu mencari dengan Cx Cf ~ / _emacs (bukan titik). Menggunakan garis bawah untuk init Anda adalah praktik umum (dan disarankan) untuk Vim dan Emacs.
labirin

Emacs mengeluh bahwa "_emacs" tidak digunakan lagi :(
Brian Z

Terima kasih. Penjelasan ini sebenarnya membantu saya menyiapkan emacs dengan benar setelah mengikuti tutorial clojure, di mana mereka bahkan tidak menyebutkannya. Membuat variabel HOME di windows dan sekarang berfungsi.
Siniyas

Bagi saya, mengacu pada poin 5 Anda di atas, direktori emacs yang saya cari adalah C: \ Users \ userid \ AppData \ Roaming di Windows 7 tetapi tentu saja komputer saya ada di domain.
pengguna8128167

Pada Windows 10 saya mengatur variabel HOME menjadi% USERPROFILE% untuk menghindari akhiran AppData.
Bae

80

Ini harus disimpan dalam variabel user-init-file. Gunakan C-H v user-init-file RETuntuk memeriksa. Anda juga dapat membukanya secara langsung dengan menggunakanM-x eval-expression RET (find-file user-init-file) RET


8
Ini sangat membantu, saya terkejut karena tidak disebutkan di bagian manual pada file init.
Brian Z

Saya bertanya-tanya mengapa ketika saya mencoba ini, saya mengerti trailing garbage following expression?
Marko Grdinic

Apakah Anda menggunakan tanda kurung?
Jose Romero

29

Buka file seperti ini di Emacs untuk Windows:

C-x C-f ~/.emacs

Informasi lebih lanjut ada di Emacs Wiki


11
Dan kemudian klik File> Buka File ... atau Simpan Sebagai ... untuk melihat di mana ~ / berada dalam dialog Buka Windows yang sudah dikenal.
Yoo

21

Di kotak Vista saya ada dalam C:\Users\<USER>\AppData\Roaming\


1
Sama untuk windows 8.1 (Emacs 24) dengan pengecualian. Ketika Emacs dibuka dari Windows Explorer, link atau konsol cmd menggunakan file profil C: \ Users \ <USER> \ AppData \ Roaming \ .emacs tetapi jika Anda membuka Emacs dari konsol PowerShell, Emacs akan mencari file .emacs di C : \ Users \ <USER> folder.
kri

Ini berhasil untuk saya. Saya membuat file .emacs di direktori Roaming di AppData, dan bekerja dengan sangat baik! Windows 10.
Retro Gamer

Bekerja di Windows 10
Alex Kaszynski

6

Perhatikan bahwa mungkin TIDAK cukup hanya dengan mengetik Ctrl-x Ctrl-f ~/.emacsdan membuat file.

Mungkin aplikasi Emacs Anda menggunakan tempat berbeda untuk menyimpan file init Anda, dan jika demikian, membuat file ~ / .emacs hanya membuat file tidak berguna yang diabaikan oleh aplikasi Emacs Anda .

Selain itu, Anda mungkin ingin melakukan lebih dari sekadar mengakses file .emacs init, tetapi Anda mungkin ingin tahu di mana tempatnya, yaitu nama jalurnya.

Untuk mendapatkan ini ada dua metode:

Cara mudah: ketik Ctrl+ H Vuser-init-fileReturn

Cara yang sedikit lebih rumit: Anda dapat mengetahui di mana sistem Anda menyimpan file .emacs sendiri dengan:

  1. Klik opsi dan gulir ke bawah ke "Set Default Font ..."
  2. Ubah pengaturan font dan klik oke
  3. Pada menu opsi, turun ke "Simpan Opsi"
  4. Ketika opsi disimpan, sistem menyimpan file .emacs-nya, dan Anda dapat membaca jalur file di minibuffer di bagian bawah layar Emacs

Silakan lihat dokumen tentang memformat jawaban Anda. Ini cukup mudah dan akan memberi Anda lebih banyak reputasi.
Bhavik Shah

Ketika saya menyimpan file bernama ~ / .emacs.el file, itu dibuat di c:/Users/user1/AppData/Roaming/.emacs.el. Situs emacswiki.org/emacs/DotEmacsDotD ini membantu saya menyadari bahwa saya perlu memberi nama file ~/.emacs.d/init.elyang berarti file dalam sistem file berada di c:\Users\user1\AppData\Roaming\.emacs.d\init.el(sama sekali tidak seperti yang saya harapkan). Saya lebih suka mengatur variabel lingkungan HOME dan menempatkan file di %USERPROFILE%direktori saya yang merupakan direktori HOME yang logis di windows (setidaknya sejauh yang saya ketahui).
PatS

4

Di Windows 7, masukkan init.elfile Anda C:\Users\user-name\AppData\Roaming\.emacs.d\, di mana nama pengguna adalah folder pengguna / login Anda.

Berhati-hatilah agar init.elfile Anda tidak diberi nama init.el.txt. Ini adalah sesuatu yang dilakukan Windows jika Anda membuat file Anda dengan beberapa editor seperti Notepad.


4

Pada versi Emacs pada Windows di atas 22, tampaknya telah dipindahkan ke

~/.emacs.d/init.el

, ~menjadi nilai variabel lingkungan Anda HOME (lihat Panel Kontrol → SistemLanjutanVariabel lingkungan ).

File itu sendiri mungkin tidak ada. Dalam hal ini, buat saja.


3

Anda harus membuat file inisialisasi emacs. Satu tidak dibuat secara otomatis. Saya memiliki masalah serupa dan jawaban ini melacak apa yang saya lakukan.

Masalah saya ~/.emacs.eladalah file saya tidak dimuat. Aneh karena ini selalu berhasil untuk saya.

Pertanyaan / jawaban ini membantu saya tetapi saya harus memasukkan file init saya %USERPROFILE%\AppData\Roaming\.emacs.d\init.elkarena ini tampaknya merupakan perilaku default pada Windows.

Untuk memecahkan masalah ini, saya menjalankan perintah berikut di buffer emacs * scratch * .

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

Ketika saya melihat user-emacs-directorywas ~/.emacs.d, saya hanya memindahkan file .emacs.el saya ke %USERPROFILE%\.emacs.d\init.el. Tapi ini tetap tidak berhasil. Saya melanjutkan expand-file-nameseperti yang ditunjukkan di bawah ini:

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

Harus menyukai cara kerja Windows. (tidak) Jadi saya memindahkan emacs.elfile saya ke %USERPROFILE%\AppData\Roaming\.emacs.d\init.eldan ini berhasil. File tersebut sekarang sedang dibaca. Tetapi saya mendapat kesalahan lain karena file inisialisasi saya memuat file (emacs pribadi) lain (dalam format ~/myenv/emacs/*.el.

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

Hum ... Sepertinya semua file saya ~/myenv/emacs/*.el perlu dipindahkan agar ini berfungsi tetapi saya tidak ingin melakukan itu. Kemudian saya menyadari bahwa karena variabel lingkungan HOME tidak disetel, emacs melakukan perilaku defaultnya .

LARUTAN

Setelah saya menetapkan HOMEvariabel lingkungan windows saya untuk %USERPROFILE%semuanya mulai berfungsi seperti itu selama 25 tahun terakhir. :-)

Untuk menyetel variabel lingkungan HOME, saya mengetik WindowsKey + "edit variabel lingkungan untuk akun Anda" untuk membuka Variabel Lingkungan kotak dialog , dan memasukkanHOME=%USERPROFILE% .

Sekarang file inisialisasi emacs saya .emacs.el telah kembali ke tempat yang semestinya $HOME/.emacs.el dan tidak dalam%USERPROFILE%\AppData\Roaming\.emacs.d\init.el

Agar adil, jika Windows hanya memiliki satu tempat untuk meletakkan file untuk paket yang diinstal pengguna, solusi pembuatan HOME = %USERPROFILE\AppData\Roamingmungkin dapat diterima, tetapi karena beberapa aplikasi menggunakan %USERPROFILE%, beberapa menggunakan%USERPROFILE\AppData\Roaming dan yang lain menggunakannya %USERPROFILE\AppData\Localhanya membuat sulit untuk mengetahui di mana menemukan konfigurasi Anda file.

Saya lebih suka memiliki semuanya di direktori% USERPROFILE% atau $ HOME saya.

Pertanyaan serupa lainnya ada di sini:


"Harus menyukai cara kerja Windows. (Tidak)" - Masalah ini tidak ada hubungannya dengan Windows selain dari apa yang telah dilakukan pengembang Emacs kepada orang-orang yang menjalankan Emacs di Windows.
Chris Charabaruk

2

Seperti yang dijawab kanja, jalur ke file ini disimpan di file user-init-file variabel (atau jika tidak ada file init, variabel tersebut berisi nilai default untuk membuatnya).

Jadi, terlepas dari kemungkinan nama file init yang Anda gunakan, dan di direktori mana, Anda harus dapat mengunjungi file init Anda dengan:

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

Atau tampilkan jalur lengkapnya di area gema dengan:

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


2

Di Emacs 23 dan Windows 7, ini hanya berfungsi jika Anda menyetel:

HKCU\SOFTWARE\GNU\Emacs\HOME

Akhirnya saya menemukan ini! Terima kasih!
Chris

Akhirnya saya menemukan ini! Saya juga!
lowerkey

Yang Anda maksud dengan "set" adalah membuat kunci itu (tanpa konten)?
Peter Mortensen

1

Saya menemukan bahwa Emacs 22 kadang-kadang akan membuka "C: \ Documents and Settings \ username \ Application Data \ .emacs", atau hanya "C: \ Documents and Settings \ username \ .emacs" di mesin XP saya. Saya belum menemukan penjelasan mengapa kadang-kadang berubah pikiran.

~ akan selalu menunjuk ke instance saat ini dari emacs yang dianggap HOME, tetapi tip kanja (Ch v user-init-file) akan selalu memberi tahu Anda apa yang sebenarnya dipetakan oleh ~ / .emacs.


2
Saya sekarang memperhatikan bahwa Windows akan mengatur HOMEvariabel lingkungan secara berbeda, tergantung pada bagaimana saya memulai runemacs.exe. Jika saya memulainya dari dalam Explorer, HOMEdiatur ke C:\Documents and Settings\username, tetapi jika saya memulainya dari Start Menu, HOMEadalah C:\Documents and Settings\username\Application Data. Aneh.
sepeda motor

1

Di Windows XP ini:

C:\Documents and Settings\yourusernamehere\Application Data\


0

Pada Windows 8.1, jika Emacs dimulai dari Windows Explorer , pintasan atau dari konsol cmd menggunakan file init C: \ Users \ <USER> \ AppData \ Roaming.emacs . Saat saya memulai Emacs dari PowerShell, Emacs mencari file initnya di folder C: \ Users \ <USER> . Perbaikan untuk masalah ini adalah mengatur variabel lingkungan pengguna HOME (Panel Kontrol \ Sistem dan Keamanan \ Sistem-> Pengaturan sistem lanjutan-> Tingkat Lanjut-> Variabel lingkungan) ke C: \ Users \ <USER> . Setelah perubahan ini, tidak peduli bagaimana saya memulai Emacs, itu menggunakan file init yang sama (lihat jawaban yang diterima dari pertanyaan ini )


0

Untuk WIndows7 & Emacs26.3 :


jika HOMElingkungan disetel, maka.emacs file tersebut harus ada di folder itu.

jika tidak, harus masuk c:\.


Dalam kedua kasus, jika .emacstidak ada,_emacs harus digunakan.

Ini karena kami tidak dapat membuat .emacsfile sesuai dengan aturan penamaan file windows. (Tetapi kami dapat mengunduh atau menyalinnya dari tempat lain).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.