¿Cómo puedo hacer que vim deje de poner comentarios delante de nuevas líneas?


50

Estoy editando mi .vimrcarchivo e incluyo comentarios. Cuando tengo un comentario como este:

" example comment

Y luego presione enter al final de la línea después de terminar el comentario, la siguiente línea se configura automáticamente como un comentario (las comillas se insertan automáticamente):

" example comment
" 

¿Cómo puedo detener este comportamiento?

Respuestas:


66

Esto se controla con la formatoptionsconfiguración; de :help fo-table:

Puede usar la 'formatoptions'opción para influir en cómo Vim formatea el texto. 'formatoptions'es una cadena que puede contener cualquiera de las letras a continuación. La configuración predeterminada es tcq. Puede separar las letras de opción con comas para facilitar la lectura.

Tenga en cuenta que la declaración acerca de los "valores predeterminados" es algo engañosa, ya que muchos tipos de archivos cambian las opciones de forma para adaptarse mejor al tipo de archivo; por ejemplo en /usr/share/vim/vim74/ftplugin/vim.vim:

" Set 'formatoptions' to break comment lines but not other lines,
" and insert the comment leader when hitting <CR> or using "o".
setlocal fo-=t fo+=croql

Puede ver la corriente formatoptionscon:

:set fo?
  formatoptions=jcroql

Y vea dónde se colocaron así:

:verbose set fo?
  formatoptions=jcroql
      Last set from /usr/share/vim/vim74/ftplugin/vim.vim

En este caso, desea eliminar la rbandera, pero quizás también las banderas cy o:

r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.

Esto se puede hacer así:

:set formatoptions-=r formatoptions-=c formatoptions-=o

Tenga en cuenta que el uso :set formatoptions-=crono funcionará como se esperaba (dado que es una cadena, buscará la cadena cro, en ese orden, que a menudo no funcionará).

Para establecer los cambios solo para el búfer actual, use en :setlocallugar de :set. Si quieren siempre tener estas opciones, es probablemente mejor usar una autocmden su vimrc; por ejemplo:

au FileType vim setlocal fo-=c fo-=r fo-=o

Esto establecerá las opciones solo para el tipo de archivo 'vim', y no interferirá con otros tipos de archivo.

Si desea configurarlo siempre , use:

au FileType * set fo-=c fo-=r fo-=o

Solo usar set fo-=crono funcionará ya que muchos tipos de archivos se configuran / expanden formatoption(como se muestra arriba); FileType autocmd se ejecuta después de que se hayan cargado los archivos de tipo de archivo.


1
Confirmado. Además, se responde aquí: stackoverflow.com/questions/16030639/vim-formatoptions-or
Melon

1
Agregar au FileType * set fo-=oa mi .vimrc no funcionó. Presiono oen una línea comentada y todavía lo comenta también.
Ixx

Esto me ha estado molestando durante mucho tiempo. Por defecto formatoptionsestaban envolviendo mi archivo txt. Me estaba rompiendo la cabeza textwidthy wrapmarginnada funcionó. Incluso rebajé mi vim de 8.1 a 8.0 pensando que es un error. Esto resolvió mi problema, gracias.
anishjp

2

Agregue esto en su vimrc:

au BufEnter * set fo-=c fo-=r fo-=o

El uso FileTypeno funcionará ya que se configuraron otros complementos formatoption.


Esta parece ser la única solución para mí, incluso cuando desactivo todos los complementos en Vundle. Usando neovim. ¿Alguna idea de por qué podría ser esto?
Andrew Gazelka
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.