Bisakah saya menonaktifkan kelanjutan komentar ke baris berikutnya di Vim?

65

Di Vim, jika saya mengetik komentar di file kode, dan saya tekan Enter, itu otomatis membuat baris baru komentar juga.

Misalnya, dalam file Ruby:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Secara umum, inilah yang saya inginkan, tetapi tidak selalu. Bagaimana saya dapat menonaktifkan sementara perilaku komentar otomatis ini?

Nathan Long
sumber
Secara sementara, apakah Anda menginginkan perintah yang melakukannya sekali saja, atau menetapkan beberapa opsi yang akan bertahan selama beberapa perintah hingga Anda mengaktifkannya kembali? Kemungkinan duplikat lintas situs: stackoverflow.com/questions/4896003/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

86

Saya pikir Anda sedang mencari

:set formatoptions-=cro

Dari :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.
...
Mike Seplowitz
sumber
13
Terima kasih banyak! Perilaku ini mengganggu saya - saya datang dari unix vi ke Linux vim. Untuk googler: Untuk penggunaan permanen , lihat juga stackoverflow.com/questions/6076592/… dan masukkan baris ini ke / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15
Tidak membantu; mengetik /**<ESC>omasih menambahkan bintang di baris berikutnya.
Qix
Tidak bekerja z
felwithe
8

Pengaturan sementara opsi 'tempel' dapat melakukan apa yang Anda inginkan, tetapi juga menonaktifkan banyak fitur Vim lainnya:

Gunakan :set pasteuntuk menyalakannya dan :set nopastemematikannya. Atau, Anda dapat menggunakan :set paste!untuk mengaktifkannya.

Lihat juga:

:help 'paste'
:help 'pastetoggle'

(Perintah-perintah itu diketik dengan tanda kutip tunggal.)

Heptite
sumber
4
:set pasteuntuk mengaktifkannya dan :set nopastemematikannya
Pengguna
2
sebagai alternatif, Anda dapat menggunakan :set paste!untuk mengaktifkannya BENAR dan SALAH
Felipe Alvarez
3

Saya memasukkan baris baru polos yang tidak diformat dengan <CR>.

Ketika saya ingin terus mengetik baris berikutnya di blok komentar saya hanya menggunakan Okunci seperti biasa.

Coba ini:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>
Sebastian Jylanki
sumber
1
Apa maksudmu <CR>? Kunci tertentu?
Peter Mortensen
1
CR adalah singkatan dari carriage return. Di komputer saya telah menggunakannya telah dipetakan ke tombol Enter.
Sebastian Jylanki
0

Saya berakhir dengan ini:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Ini menambahkan baris baru, menghapus semua yang sudah disisipkan di sana, dan meninggalkan kursor dalam mode masukkan di kolom indentasi, tanpa mengacaukan opsi format.

Ruben
sumber
0

Jawaban ini berlaku untuk Debian dan beberapa turunannya.

Pada distribusi Debian, default Vim tidak masuk akal. Mereka berada di /usr/share/vim/vim80/defaults.vimdan diterapkan setelah (!) /etc/vim/vimrcDijalankan. Satu-satunya cara untuk memberi tahu Vim untuk tidak menggunakan standarnya adalah dengan memastikan ~/.vimrcada meskipun itu kosong. Vim pada startup mencoba membaca dari .vimrc, tetapi jika file tidak ditemukan itu berlaku default yang membawa banyak perilaku yang tidak diinginkan misalnya integrasi mouse, kebiasaan copy-paste, komentar auto-wrap, dll.

Di Debian Anda dapat memperbaiki SEMUA itu hanya dengan menjalankan touch ~/.vimrc

oᴉɹǝɥɔ
sumber