¿Puedo desactivar la continuación de comentarios a la siguiente línea en Vim?


65

En Vim, si estoy escribiendo un comentario en un archivo de código y presiono Enter, automáticamente la nueva línea también es un comentario.

Por ejemplo, en un archivo Ruby:

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

En general, esto es lo que quiero, pero no siempre. ¿Cómo puedo desactivar temporalmente este comportamiento de comentarios automáticos?


En forma temporal, ¿desea un comando que lo haga una sola vez o configure alguna opción que dure algunos comandos hasta que lo vuelva a encender? Posible duplicado entre sitios: stackoverflow.com/questions/4896003/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:


86

Creo que estas buscando

:set formatoptions-=cro

De :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
Muchas gracias! Este comportamiento me estaba molestando: vine de unix vi a Linux vim. Para googlers: Para uso permanente , consulte también stackoverflow.com/questions/6076592/… e ingrese esta línea en / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15

No ayudó; escribir /**<ESC>oaún agrega una estrella en la siguiente línea.
Qix

No funciona z
felwithe

8

La configuración temporal de la opción 'pegar' puede hacer lo que desee, pero también deshabilita muchas otras características de Vim:

Use :set pastepara encenderlo y :set nopasteapagarlo. Alternativamente, puede usar :set paste!para alternarlo.

Ver también:

:help 'paste'
:help 'pastetoggle'

(Esos comandos se escriben con comillas simples).


44
:set pasteencenderlo y :set nopasteapagarlo
Usuario

2
alternativamente, puede usar :set paste!para alternar VERDADERO y FALSO
Felipe Alvarez

3

Entro nuevas líneas simples sin formato con <CR>.

Cuando quiero seguir escribiendo la siguiente línea en el bloque comentado, solo uso la Otecla como de costumbre.

Prueba esto:

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

1
¿Qué quieres decir con <CR>? ¿Una clave particular?
Peter Mortensen

1
CR significa retorno de carro. En las computadoras que he usado se ha asignado a la tecla Intro.
Sebastian Jylanki el

0

He terminado con esto:

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

Agrega una nueva línea, elimina todo lo que ya está insertado allí y deja el cursor en modo de inserción en la columna con sangría, sin alterar las opciones de formato.


0

Esta respuesta se aplica a Debian y algunos de sus derivados.

En una distribución Debian, los valores predeterminados de Vim no son razonables. Se ubican /usr/share/vim/vim80/defaults.vimy se aplican después de /etc/vim/vimrcejecutar (!) . La única forma de decirle a Vim que no use sus valores predeterminados es asegurarse de que ~/.vimrcexista incluso si está en blanco. Vim en el inicio intenta leer .vimrc, pero si no se encuentra el archivo, aplica los valores predeterminados, lo que conlleva un comportamiento indeseable, por ejemplo, integración del mouse, copiar y pegar peculiaridades, autoenvolver comentarios, etc.

En Debian puede arreglar TODO eso simplemente ejecutando touch ~/.vimrc

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.