Saya memiliki wilayah kode python yang dipilih dalam emacs. Apa cara paling efisien untuk membuat indentasi dan menghapuskan setiap baris di dalamnya dengan 4 spasi?
Idealnya saya ingin sesuatu yang tidak peka konteks (mis. Itu akan memungkinkan saya untuk indent bagian dalam dokumen di mana lekukan tidak berhubungan dengan sintaks python).
Baris mode saya menunjukkan (Python)
. Mencari di web saya menemukan banyak diskusi tentang penggunaan python-mode
alih-alih python
, tetapi saya hanya mulai menggunakan emacs beberapa hari yang lalu jadi saya waspada untuk mengubah default sebelum saya memiliki kesempatan untuk mengerti dan mereka. Jika beralih ke python-mode
adalah pilihan terbaik, saya senang menerimanya sebagai jawaban.
Apa yang saya coba (dari manual):
<TAB>
tidak berpengaruhC-M-\
tidak berpengaruhC-x <TAB>
(indent-kaku) indentasi setiap baris dengan satu kolom (dan batal memilih wilayah)M-i
indentasi satu baris pertama dengan tab (panjang 8 spasi)C-M-q
- "CMq tidak ditentukan"
Satu-satunya cara yang saya temukan adalah menggunakan regex-replace, tetapi itu adalah penekanan tombol yang sangat banyak untuk tugas yang begitu sederhana.
sumber
python-indent-shift-left
.indent-rigidly
mengambil argumen awalan yang menunjukkan berapa banyak indentasi oleh, jadiC-u 42 C-x TAB
indentasi oleh 42 kolom, dan karena argumen awalan default adalah 4,C-u C-x TAB
indentasi oleh 4 kolom.Jika Anda ingin memilih wilayah lagi, lakukan
C-x C-x
sesudahnya.sumber
Gunakan perintah indent-rigidly dengan awalan angka.
C-u 4 M-x indent-rigidly
untuk membuat inden wilayah dengan empat spasi,C-u -4 M-x indent-rigidly
untuk menghapus empat spasi.sumber
Cx Cx tandai kode dan kemudian Mx indent-for-tab-mode
Itulah save jika Anda telah menekan tab untuk setiap baris.
sumber
Anda juga bisa menggunakan mode kolom.
Pilih garis dalam mode kolom, lalu tambahkan empat spasi untuk semuanya sekaligus:
C-<space>
untuk menetapkan tandaC-x r t
untuk masuk ke mode kolom (atauC-<RET>
jika Anda punya mode CUA)<space><space><space><space><RET>
Anda dapat melakukan manuver serupa untuk menghapus empat spasi - cukup sertakan 4 kolom di wilayah yang ditandai (langkah 2-3) dan tekan
<DEL>
sumber
Memperbarui solusi Chen di atas, saat ini (diuji pada Emacs 24.4.1) perintah telah diubah namanya. Jadi, dengan asumsi Anda ingin membuat indentasi sesuai dengan variabel python-indent, perintahnya adalah python-indent-shift-left dan python-indent-shift-right. Kamu bisa:
keluarkan mereka dengan mengetik
M-x python-indent-shift-right
atauM-x python-indent-shift-left
gunakan cara pintas python-mode default
C-c >
danC-c <
rebind mereka. Misalnya, pada keyboard dengan tombol windows saya menggunakan:
sumber
Kompabilitas adalah raja dengan Emacs, cukup gabungkan
M-i
dengan https://github.com/magnars/multiple-cursors.el dan Anda memiliki perintah indentasi blok. Itu yang Anda lakukan:M->
N kali (di mana N adalah jumlah garis dalam blok)M-i
sumber
Keduanya
S-<LEFT>
danS-<RIGHT>
berfungsi dengan baik dalamPython
mode utama. Ini terutama nyaman dalam Mode Cua di manaC-c
danC-x
perubahan perilaku untuk menyalin / memotong ketika suatu daerah dipilih.sumber