- Ketika kita menambahkan lebih banyak baris ke
~/.emacs.d/init.el
berbagai tujuan (untuk mode-python, untuk emacs-eclim, untuk ...), file menjadi panjang dan kurang dapat dibaca. Apakah ada cara untuk membantu mengatur kontennya? Arus saya
~/.emacs.d
terlihat seperti ini$ ls * init.el auto-save-list: elisp: python-mode.el-6.1.3 elpa: archives auctex-readme.txt s-20140910.334 auctex-11.87.7 emacs-eclim-20140809.207 eshell: history
python-mode.el-6.1.3
telah diinstal secara manual, saatemacs-eclim-20140809.207
diinstal olehelpa
, dan saya tidak 100% yakin bahwa hal-hal lain di bawahelpa/
ini olehelpa
. Bagaimana saya bisa mengatur konten~/.emacs.d/
?
28
.emacs
dan.wl
tidak cukup lama.Cara klasik untuk melakukan ini adalah membelah Anda
.emacs
menjadi file yang terpisah. Misalnya, Anda bisa memindahkan semua barang web ke~/.emacs.d/web-config.el
dan kemudian memuatnya di dalaminit.el
:Jika Anda ingin menjaga
~/.emacs.d
sedikit lebih teratur, Anda juga bisa memindahkan file-file konfigurasi ini ke direktori mereka sendiri:Sekarang Anda bisa langsung beralih ke file yang sesuai saat membuat perubahan pada konfigurasi Anda.
Satu hal yang hilang dari ini adalah variabel yang ditetapkan melalui sistem kustomisasi. Ini semua masih akan berada di init.el. utama Anda Rupanya, ada sedikit utilitas yang disebut init split yang memungkinkan Anda membuat aturan tentang pengaturan kustom mana yang digunakan, tetapi saya tidak pernah menggunakannya sendiri. Atau, sistem "kustomisasi" dapat dikonfigurasi untuk menggunakan file terpisah untuk modifikasi pengaturan Anda. Atur
custom-file
variabel untuk menentukan dari mana pengaturan "kustomisasi" harus dibaca dan ditulis .Sejauh direktori itu sendiri berjalan, saya selalu senang dengan tata letak default. Perubahan utama yang saya buat adalah membuat direktori untuk semua paket kustom saya sendiri dan perpustakaan yang tidak dikelola oleh
package.el
. Ini memberikan satu rumah untuk pelat kustom saya yang tidak terkait dengan konfigurasi.sumber
elpa
dikelola olehelpa
? Bisakah saya memindahkannya ke tempat lain?custom-file
variabel. SumberJika Anda menyukai Org-mode, Anda dapat menggunakannya untuk mengatur Anda
.emacs
tanpa membaginya. Di bawah konfigurasi saya saat ini,.emacs
file saya hanya bootstrap file init.org yang saya miliki di bawah~/.emacs.d/init/init.org
Dengan menggunakan file yang berbeda Anda perlu,
grep
bukannya mudahC-s
untuk mencari sesuatu, dan sebagainya. Juga, lebih mudah untuk menambahkan beberapa level ke organisasi Anda.sumber
org-babel-load-file
. Manis! (Contoh: github.com/vermiculus/dotfiles/blob/… , github.com/larstvei/dot-emacs )Cukup pindahkan potongan-potongan kode dari
init.el
ke file yang terpisah (perpustakaan), yang kemudian Andarequire
. (Gunakanprovide
di perpustakaan untukrequire
d.) Letakkan file-file itu di mana pun Anda inginkan, dan perbaruiload-path
sesuai.sumber
~/.emacs.d/
? Anda tidak menawarkan spesifikasi apa yang Anda inginkan. Anda tidak dibatasi untuk memiliki semuanya dalam satu direktori. Anda dapat meletakkan barang-barang di mana saja Anda suka, dan memodifikasiload-path
sesuai. Jika beberapa program / alat hanya menempatkan barang-barang di~/.emacs.d/
(yaitu, jika Anda tidak bisa mengatakan di mana harus meletakkan barang-barang), kemudian pindahkan ke tempat yang Anda inginkan setelah program / alat itu selesai(require 'foobar)
adalah contoh penggunaanrequire
.(add-to-list 'load-path "/my/lisp/dir")
adalah contoh modifikasiload-path
.(provide 'foobar)
adalah contoh penggunaanprovide
.init.el
dapat memuat perpustakaan yang berlokasi di mana saja , tidak hanya di dalam~/.emacs.d/
.Saya menggunakan saran oleh targzeta yang ditemukan di Emacs Wiki: Memuat direktori .
Pada dasarnya saya punya ~ / .emacs.d / load-directory.el:
Kemudian saya hanya meletakkan file terpisah di ~ / .emacs.d / config saya:
Dan akhirnya saya memilikinya di ~ / .emacs.d / init.el:
sumber
Jelas ada lebih dari satu cara untuk menguliti kucing khusus ini. Favorit saya saat ini adalah untuk digunakan
outline-minor-mode
dengan lebih baik . Kutipan:Perhatikan bahwa Anda perlu keluar dari repositori paket favorit Anda.
sumber
Saya menggunakan struktur berikut untuk melacak paket dan file
Saya kemudian gunakan
use-package
untuk mengelola paket mana yang dimuat dan kustomisasi mana yang ditetapkan untuk setiap paket. Sebagian besar waktu hanyahack
danelpa
memerlukan pembaruan, folder lain sering untuk paket satu kali yang ingin saya uji atau gunakan secara singkat tetapi tidak perlu memuat (bahkan diam-diam).custom.el
adalah untuk pengaturan Kustomisasi, yang saya lebih suka tidak menggunakan (dan tidak versi bahkan jika saya menggunakan).defaults.el
adalah untuk konfigurasi umum (menu-bar, font, encoding, dll) yang kemudian dapat ditimpa dalam file .eluser-config/
untuk memungkinkan sistem yang akan berfungsi seperti yang saya harapkan, tetapi dapat disesuaikan agar sesuai dengan lingkungan.Saya sebelumnya telah mencoba untuk menjaga
functions
,macros
,advice
dalam paket terpisah untuk memungkinkan penggambaran antara konten, tapi ran dalam definisi / membutuhkan masalah sehingga telah menempatkan kembali mereka ke dalaminit.el
. Mereka akhirnya dapat dimasukkan kembali ke~/.emacs.d/lisp/
.Saya mencoba untuk tetap
init.el
rapi, mengurutkan konten berdasarkan fungsi dan tujuan sehingga menemukan lagi akan mudah. Saya sudah memilikiinit.el
file monolitik dan terus menambahkan konten baru di akhir (atau di mana saya pikir itu cocok) dan kemudian akan berakhir tidak tahu apa yang telah saya tambahkan atau di mana saya telah menambahkannya ketika saya pergi untuk mencarinya (dan kadang-kadang pencarian menggunakanisearch
tidak membantu karena saya tidak ingat bagaimana saya menyebutkan sesuatu pada saat itu).sumber
Semua jawaban yang ada membahas praktik terbaik untuk mengatur file yang dibuat secara manual , seperti
init.el
dan teman-teman. Yang tak kalah penting adalah pengorganisasian semua file yang dibuat secara otomatis dari berbagai paket, dan untuk ini paketnyano-littering
luar biasa.sumber
saya tambahkan
untuk emacs-lisp-mode-hook. Kemudian tambahkan ke bagian file "yasnippet", "packaging", "java mode", dll. Ini berfungsi baik untuk 1000 baris kode saya (termasuk komentar).
EDIT: Akhirnya saya beralih antar bagian dengan helm-imenu. Sebenarnya pengait helm menjadi fungsi imenu normal secara otomatis sehingga yang saya butuhkan hanyalah
sumber
Saya membagi
.emacs
file saya yang relatif kecil menjadi tiga bagian:emacs-custom.el untuk kustomisasi, merobek banyak data besar dan tidak berguna; file secara otomatis ditulis ulang tanpa menyentuh file .emacs utama , mencegah perubahan palsu.
lg-lib.el untuk kode daripada konfigurasi: memuat perpustakaan saya sendiri dari lokasi sumber yang tidak standar daripada dari direktori paket dan mendefinisikan berbagai fungsi (kebanyakan disalin dan diretas tanpa adanya paket yang tepat); itu adalah pengurangan besar jumlah baris .emacs
File .emacs utama : tanpa kode besar dan variabel kustomisasi besar, ini berisi
require
panggilan untuk paket, variabel yang bukan bagian dari sistem Kustomisasi, dan berbagai macam panggilan fungsi untuk memuat dan menginisialisasi paket. Saya "mengatur" dengan hati-hati menjaga semua baris yang berkaitan dengan paket atau fitur yang sama bersama-sama, dan selanjutnya memisahkan pemuatan paket dan pengaturan terkait paket dari fungsionalitas "inti". Kutipan yang cukup representatif:Bagian-bagian ini kecil, tetapi akan tetap dapat dikelola dengan lebih banyak garis konfigurasi untuk setiap paket.
sumber
Ikuti pengaturan master Emacs, misalnya, https://github.com/purcell/emacs.d
Misalnya, mengenai cara mengatur paket dan paket yang diinstal secara manual yang diinstal dari ELPA, setup Steven Purcell telah
Mengapa mengikuti seorang master? Poin utama dari "Master emacs saya dalam satu tahun" adalah bahwa pemula dapat secara efisien menghindari pengaturan overhead dan "gotchas."
Saya mengerti bahwa banyak orang tidak setuju dengan saya, tetapi inilah kasus saya (dirinci dalam artikel saya ):
Saya mulai menggunakan Emacs dengan menggunakan konfigurasi Purcell yang sangat dihormati ( 1403 GitHub per Nov 2014!), Konfigurasi stabil (5 tahun dalam pengembangan). Meskipun mulai dari itu, saya masih memiliki banyak masalah . Steve Purcell membantu saya menyelesaikan semua masalah itu. (Saya benar-benar menjadi Padawan- nya selama lebih dari setahun.) Dengan menggunakan pengaturannya, dan menggunakan masalah repo-nya untuk melaporkan masalah, dan mengambil keuntungan dari pengalamannya, saya menghindari membuang banyak waktu. Bahkan hari ini, saya masih mengamati banyak orang menggunakan
git submodule
untuk mengelola plugin pihak ketiga. Steve dan saya menyerah menggunakangit submodule
ini karena ini bisa menjadi PITA .Tetapi jika Anda sangat percaya diri dengan keterampilan Anda atau lebih suka belajar mandiri, ini bukan jalan untuk Anda.
sumber
[email protected]
, danwww.emacswiki.org
, dan[email protected]
, dan bahkandebbugs.gnu.org
. Yang mengatakan, tidak ada yang salah dengan berbagi file init seseorang, untuk melayani orang lain sebagai makanan untuk dipikirkan. Nasihatnya adalah agar pemula tidak memulai seperti itu; sarannya adalah agar orang tidak membagikan pendekatan dan tip startup mereka sendiri.Cara inovatif dan sederhana untuk membersihkan
.emacs.d
folder Anda adalah dengan menggunakanorg-mode
dan menguraikan semuanya menggunakan blok sumber. Kemudian, di.emacs
file Anda , arahkan keconfig.org
.Sumber yang bagus tentang ini adalah Harry Schwartz. Dia memiliki video youtube yang menyentuh dan posting blog yang menjelaskan detailnya . Saya bisa mengikutinya sebagai emacs noob dan mendapatkan semua pengaturan. Bekerja seperti pesona. 1 file untuk keseluruhan saya
init
.sumber