Bagaimana cara mengomentari satu blok kode di Emacs?


12

Di Emacs, cara mengomentari blok teks, mis. Cara indentasi blok teks oleh n karakter spasi putih dan menempatkan urutan karakter yang dipilih, katakanlah ##, di awal setiap baris?

Asli

foo
bar foobar
   foo bar

Diinginkan:

# foo
# bar foobar
#    foo bar
  • Saya membutuhkan metode yang tidak mengganggu mode CUA.
  • comment-dwin tidak mengizinkan saya untuk memilih urutan karakter yang berubah-ubah.

Jawaban:


13

Salah satu caranya adalah menggunakan string-rectangle ( C-x r t ).

Tandai blok, lalu panggil string-rectangle dan memberi ## sebagai string untuk disisipkan.


2
Berikut langkah-langkah yang lebih konkret: 1) pindahkan kursor ke awal 2) C-M-@ 3) pindahkan kursor ke ujung 4) C-x r t 5) ketik urutan karakter awalan, seperti ## , tekan ENT
qazwsx

Apakah mungkin untuk melakukan invers?
mustISignUp

Anda dapat memilih kotak dan menghapusnya dengan C-x R K
Juancho

11

Bergantung pada mode apa yang Anda jalankan (mis. Mode CC, Mode Lisp) Anda dapat memilih wilayah dan kemudian menggunakan perintah comment-region (biasanya terikat ke C-c C-c. Jika semuanya diatur dengan benar, itu harus menggunakan karakter komentar yang sesuai untuk jenis file yang Anda edit.


7
Bagaimana ini berbeda dari M-;?
qazwsx

4
@duperuser M-; adalah perintah komentar yang lebih umum. Ketika tidak ada wilayah aktif, itu menyisipkan komentar (setelah ada pernyataan di telepon, dan berbaris dengan kolom komentar). Ketika suatu daerah dipilih, ia berperilaku seperti comment-region. Ketika tidak ada wilayah aktif, comment-region tidak memasukkan komentar.
jwernerny

Bukan hanya itu, tapi comment-region, tidak seperti comment-dwim (yang mana M-; secara default) memungkinkan Anda secara fleksibel dan paling tidak blokir komentar. Gunakan polos C-u ke unest satu tingkat sarang. (Saya mengikat C-x C-; untuk comment-region. Sebenarnya, saya mengikatnya comment-region-lines dari misc-cmds.el.)
Drew

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.