Saya tidak berhasil membuat Emacs beralih dari 8 tab spasi ke 4 tab ruang ketika menekan TABbuffer dalam dengan mode utama text-mode
. Saya telah menambahkan yang berikut ini ke .emacs
:
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
;;; And I have tried
(setq indent-tabs-mode nil)
(setq tab-width 4)
Tidak peduli bagaimana saya mengubah .emacs
file saya (atau variabel lokal buffer saya) TABtombol selalu melakukan hal yang sama.
- Jika tidak ada teks di atas, indentasi 8 spasi
- Jika ada teks di baris sebelumnya, lekuk ke awal kata kedua
Seperti halnya saya mencintai Emacs, ini semakin menjengkelkan. Apakah ada cara untuk membuat Emacs ke setidaknya indentasi 4 spasi ketika tidak ada teks di baris sebelumnya?
emacs
indentation
Cristian
sumber
sumber
(setq-default tab-width 4)
BUKAN hal yang sama seperti(setq tab-width 4)
pastikan Anda tidak melewatkan "-default"!Jawaban:
atau tambahkan entri daftar-berhenti-tab ke variabel set-kustom di file .emacs :
sumber
'(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120)))
? Nah, selama itu berhasil saya kira ...: P'(tab-stop-list (quote (4)))
.quote
membutuhkan dua angka untuk melanjutkan urutan ad infinitum. Lihat: stackoverflow.com/a/42148697/2662028Jawaban singkat:
Poin kuncinya adalah memberi tahu emacs untuk memasukkan apa pun yang Anda inginkan saat indentasi, ini dilakukan dengan mengubah fungsi indent-line. Lebih mudah untuk mengubahnya untuk memasukkan tab dan kemudian mengubah tab menjadi 4 spasi daripada mengubahnya untuk memasukkan 4 spasi. Konfigurasi berikut akan menyelesaikan masalah Anda:
Penjelasan:
Dari Lekukan Terkendali oleh Mode Utama @ emacs manual :
Dari manual indent-relative @ emacs:
Cukup ubah nilai indent-line-function ke fungsi insert-tab dan konfigurasikan penyisipan tab sebagai 4 spasi.
sumber
Pembaruan: Sejak Emacs 24.4:
yang berarti tidak perlu lagi mengatur
tab-stop-list
dengan cara yang ditunjukkan di bawah ini, karena Anda dapat mengaturnyanil
.Jawaban asli berikut ...
Itu selalu menyakitkan saya sedikit melihat hal-hal seperti
(setq tab-stop-list 4 8 12 ................)
ketikanumber-sequence
fungsi duduk di sana menunggu untuk digunakan.atau
sumber
tab-stop-list
sekarang secara implisit diperluas hingga tak terbatas. Nilai defaultnya diubah menjadi nil yang berarti tab menghentikan setiaptab-width
kolom." - jadi sebenarnya Anda bisa menggunakan nilai default darinil
.Anda mungkin lebih mudah mengatur tab Anda sebagai berikut:
Saat
Customize group:
diminta masukindent
.Anda akan melihat layar tempat Anda dapat mengatur semua opsi indentasi dan mengaturnya untuk sesi saat ini atau menyimpannya untuk semua sesi mendatang.
Jika Anda melakukannya dengan cara ini, Anda ingin mengatur file penyesuaian .
sumber
sumber
sumber
26.3
ini berfungsi untuk kode C ++ dan komentar di dalamnya juga
sumber
Masalah ini tidak disebabkan oleh penghentian tab yang hilang; emacs memiliki metode tab (baru?) yang disebut indent-relative yang tampaknya dirancang untuk menyejajarkan data tabular. Kunci TAB dipetakan ke metode indent-for-tab-command, yang memanggil metode apa pun yang diatur ke variabel indent-line-function, yang merupakan metode indent-relative untuk mode teks. Saya belum menemukan cara yang baik untuk mengesampingkan variabel indent-line-function (pengait mode teks tidak berfungsi, jadi mungkin ini akan disetel ulang setelah pengait mode dijalankan?) Tetapi satu cara sederhana untuk menghilangkan ini behaviour adalah hanya membuang metode intent-for-tab-command dengan menetapkan TAB ke metode tab-to-tab-stop yang lebih sederhana:
(tentukan-kunci-mode-peta teks (kbd "TAB") 'tab-to-tab-stop)
sumber
Coba ini:
Itu akan membuat TAB selalu menyisipkan karakter TAB literal dengan tab berhenti setiap 4 karakter (tetapi hanya dalam mode Teks). Jika bukan itu yang Anda minta, tolong jelaskan perilaku yang ingin Anda lihat.
sumber
Anda dapat menambahkan baris kode ini ke file .emacs Anda. Ini menambahkan hook untuk mode teks untuk menggunakan tab insert bukan indent-relatif.
Saya harap ini membantu.
sumber
Hanya mengubah gaya dengan gaya c-set sudah cukup bagi saya.
sumber
Tambahkan ini ke file .emacs Anda:
Ini akan mengatur lebar tab ditampilkan hingga 2 karakter (ubah angka 2 menjadi apa pun yang Anda inginkan)
Untuk memastikan bahwa emacs sebenarnya menggunakan tab alih-alih spasi:
Sebagai tambahan, default untuk emacs ketika backspacing di atas tab adalah untuk mengubahnya menjadi spasi dan kemudian menghapus spasi. Ini bisa mengganggu. Jika Anda ingin menghapus tab saja, Anda dapat melakukan ini:
Nikmati!
sumber
Ini adalah satu-satunya solusi yang menjaga agar tab tidak pernah disisipkan untuk saya, tanpa urutan atau konversi tab menjadi spasi. Keduanya tampak memadai, tetapi sia-sia:
Catat itu
quote
perlu dua angka untuk bekerja (tetapi tidak lebih!).Juga, dalam sebagian besar mode utama (
Python
misalnya), lekukan otomatis di Emacs. Jika Anda perlu membuat indentasi di luar indentasi otomatis, gunakan:M-i
sumber
Kustomisasi dapat membayangi
(setq tab width 4)
jadi gunakansetq-default
atau biarkan Kustomisasi tahu apa yang Anda lakukan. Saya juga memiliki masalah yang mirip dengan OP dan memperbaikinya dengan ini saja, tidak perlu menyesuaikantab-stop-list
atauinsert
fungsi apa pun :Sangat bermanfaat untuk menambahkan ini segera setelah (tip dari emacsWiki):
sumber
Jawaban terbaik tidak berfungsi sampai saya menulis ini di file .emacs:
sumber
Sudahkah Anda mencoba
sumber
sumber
By the way, untuk mode-C , saya menambahkan
(setq-default c-basic-offset 4)
ke .emacs. Lihat http://www.emacswiki.org/emacs/IndentingC untuk detailnya.sumber
Dari file init saya, berbeda karena saya menginginkan spasi alih-alih tab:
sumber
Dimodifikasi jawaban ini tanpa kaitan apa pun:
sumber