Posso disabilitare la continuazione dei commenti alla riga successiva in Vim?


65

In Vim, se sto scrivendo un commento in un file di codice e premo Enter, anche la newline diventa automaticamente un commento.

Ad esempio, in un file Ruby:

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

In generale, questo è quello che voglio, ma non sempre. Come posso disattivare temporaneamente questo comportamento di commento automatico?


Per temporaneamente, vuoi un comando che lo faccia una sola volta, o impostare alcune opzioni che dureranno per alcuni comandi fino a quando non lo riattivi? Sito croce Eventuali duplicati: stackoverflow.com/questions/4896003/...
Ciro Santilli新疆改造中心法轮功六四事件

Risposte:


86

Penso che tu stia cercando

:set formatoptions-=cro

Da :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.
...

13
Grazie mille! Questo comportamento mi dava fastidio: vengo da unix vi a Linux vim. Per i googler: per un uso permanente , vedere anche stackoverflow.com/questions/6076592/… e inserire questa riga in / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15

Non ha aiutato; la digitazione /**<ESC>oaggiunge ancora una stella nella riga successiva.
Qix,

Non funziona z
felwithe

8

L'impostazione temporanea dell'opzione 'incolla' può fare quello che vuoi, ma disabilita anche molte altre funzionalità di Vim:

Utilizzare :set pasteper accenderlo e :set nopasteper spegnerlo. In alternativa, puoi usarlo :set paste!per attivarlo.

Guarda anche:

:help 'paste'
:help 'pastetoggle'

(Quei comandi sono digitati con le virgolette singole.)


4
:set pasteper accenderlo e :set nopastespegnerlo
Utente

2
in alternativa puoi usarlo :set paste!per attivarlo VERO e FALSO
Felipe Alvarez,

3

Inserisco nuove righe semplici non formattate con <CR>.

Quando voglio continuare a digitare la riga successiva nel blocco commentato, utilizzo semplicemente il Otasto come al solito.

Prova questo:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>

1
Cosa intendi con <CR>? Una chiave particolare?
Peter Mortensen,

1
CR sta per ritorno a capo. Sui computer che ho usato è stato mappato sul tasto Invio.
Sebastian Jylanki,

0

Ho finito con questo:

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

Aggiunge una nuova riga, elimina tutto ciò che è già stato inserito e lascia il cursore nella modalità di inserimento nella colonna rientrata, senza fare confusione con le opzioni di formato.


0

Questa risposta si applica a Debian e ad alcuni dei suoi derivati.

Su una distribuzione Debian le impostazioni predefinite di Vim sono irragionevoli. Si trovano /usr/share/vim/vim80/defaults.vime vengono applicati dopo l' /etc/vim/vimrcesecuzione (!) . L'unico modo per dire a Vim di non usare i suoi valori predefiniti è assicurarsi che ~/.vimrcesista anche se è vuoto. Vim all'avvio tenta di leggere .vimrc, ma se il file non viene trovato applica le impostazioni predefinite che portano molti comportamenti indesiderati, ad esempio integrazione del mouse, stranezze copia-incolla, avvolgimento automatico dei commenti, ecc.

Su Debian puoi sistemare TUTTO ciò semplicemente eseguendo touch ~/.vimrc

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.