Vim secara otomatis memasukkan komentar ketika saya memulai baris baru dari baris komentar, karena saya telah menetapkan formatoptions=tcroql
. Misalnya (kursor adalah *
):
// this is a comment*
dan setelah memukul <Enter>
(masukkan mode) atau o
(mode normal) saya dibiarkan dengan:
// this is a comment
// *
Fitur ini sangat berguna ketika menulis komentar multi-baris yang panjang, tetapi seringkali saya hanya ingin komentar satu baris. Sekarang jika saya ingin mengakhiri seri komentar saya memiliki beberapa opsi:
- memukul
<Esc>S
- tekan
<BS>
tiga kali
Keduanya mampu melakukan tiga kali penekanan tombol, secara bersamaan dengan <Enter>
ini berarti empat penekanan tombol untuk baris baru, yang menurut saya terlalu banyak. Idealnya, saya hanya ingin melakukan <Enter>
yang kedua kalinya:
// this is a comment
*
Penting bahwa solusinya juga akan bekerja dengan tingkat indentasi yang berbeda, yaitu
int main(void) {
// this is a comment*
}
memukul <Enter>
int main(void) {
// this is a comment
// *
}
memukul <Enter>
int main(void) {
// this is a comment
*
}
Saya pikir saya telah melihat fitur ini di beberapa editor teks beberapa tahun yang lalu tetapi saya tidak ingat yang mana itu. Adakah yang mengetahui solusi yang akan melakukan ini untuk saya di Vim? Pointer ke arah yang benar tentang cara menggulung solusi saya sendiri juga sangat disambut.
sumber
Jawaban:
Coba ini:
sumber
:h 'comment'
dan:h format-comment'
.#
ruby dan"
vimscript di samping klasik//
. Tidak masuk akal untuk melakukan apa pun untuk*
komentar multiline gaya-C karena itu harus diakhiri dengan yang lain*/
.<CR><CR>
bisa digunakan untuk menyelesaikan komentar multiline ...Saya memperluas jawaban @ romainl untuk bekerja dengan bahasa yang berubah-ubah dengan membuat regex dari Vim
&commentstring
:Namun, sepertinya saya tidak bisa memetakan lagi
<CR>
, ini tidak akan berhasil. Untuk saat ini, saya menggunakan<CR><CR>
sampai masalah ini terpecahkan.sumber
<Esc>S
?<C-u>
melakukan hal yang sama tanpa meninggalkan mode sisipkan. Ngomong-ngomong, saya punya fungsi khusus yang melakukan banyak hal<CR>
dan menamainyaSmartEnter()
baru kemarin setelah saya memposting jawaban saya ;-). Juga saya tidak yakin&commentstring
adalah pilihan yang tepat karena umumnya hanya berisi satu bentuk dan mungkin "linewise" atau "blockwise" (/*%s*/
dalam C,//%s
dalam Javascript, dll).Hapus r dari 'formatoptions. Itulah yang dilakukan opsi itu. Menonaktifkannya akan berarti Anda tidak pernah melakukan hal itu untuk Anda yang berarti Anda perlu menambahkan penanda komentar terkemuka ketika Anda benar-benar menginginkannya tetapi itu adalah kompromi.
sumber
formatoptions