metrologia - vim online
Vim: `set formatoptions` se está perdiendo? (5)
Tengo set formatoptions=cqn
en mi vimrc
, pero por alguna razón no se pega. Parece que Vim está volviendo al valor predeterminado ( fo=tcq
) en algún momento ... Pero no puedo entender por qué. Ejecutar -V100/tmp/log
solo me da:
formatoptions=tcq Last set from ~/.vimrc
Sin contexto útil.
Entonces, ¿hay alguna manera de hacer que las opciones de formato se peguen? ¿O simplemente necesito crear un autocmd para restablecerlo cada vez que se carga un nuevo archivo?
Editar
Usando :verbose set formatoptions
muestra esto:
formatoptions=tcq Last set from ~/.vimrc
Sin embargo, la única referencia a fo
o formatoptions
en mi ~ / .vimrc es set formatoptions+=cqn
.
Encontrado en /usr/share/vim/vim74/ftplugin/vim.vim
:
" Set ''formatoptions'' to break comment lines but not other lines,<br>
" and insert the comment leader when hitting <CR> or using "o".<br>
setlocal fo-=t fo+=croql
Quitarlo Entonces todas las cosas hechas.
Este comportamiento se debe al complemento de archivo C en VIM. Dado que el complemento de archivo se carga después de cargar .vimrc, las configuraciones en .vimrc se sobrescriben.
La solución dada por David Wolever parece ser la mejor opción.
Agregue la siguiente línea en .vimrc:
autocmd BufNewFile,BufRead * setlocal formatoptions+=cqn
... en lugar del comando normal set formatoptions
.
Me encontré con este problema también. Tenía configuraciones específicas del proyecto algo así como
autocmd BufRead,BufNewFile project/*.c setlocal formatoptions-=cro
Sin embargo, set fo?
formatoptions=croql
. Resulta que necesitaba BufWinEnter
lugar de BufRead
:
Después de un búfer se muestra en una ventana. Esto puede suceder cuando se carga el búfer (después de procesar los modelos) o cuando se muestra un búfer oculto en una ventana (y ya no está oculto). No ocurre para: dividir sin argumentos, ya que sigue editando el mismo búfer, o ": split" con un archivo que ya está abierto en una ventana, porque reutiliza un búfer existente. Pero sí ocurre con un ": split" con el nombre del búfer actual, ya que recarga ese búfer.
Asi que esto funciona
autocmd BufWinEnter,BufNewFile project/*.c setlocal formatoptions-=cro
Según la documentación de vim en formatoptions
:
NOTA: esta opción se establece en el valor predeterminado de Vi cuando ''compatible'' es
establecer y al valor predeterminado de Vim cuando se reinicia ''compatible''.
Entonces, si el valor de compatible está cambiando en el camino, eso podría estar causando el problema que estás viendo.
Suena como un archivo que proviene de su .vimrc o los complementos están cambiando ese valor.
Algo para tratar de señalarlo es
iniciar vim sin abastecerse de nada, usar
vim -u NONE
Usando NORC
skipps .vimrc pero carga complementos
Marque :help --noplugin
para leer acerca de varias opciones de inicio que controlan el origen.
--noplugin Skip loading plugins. Resets the ''loadplugins'' option.
{not in Vi}
Note that the |-u| argument may also disable loading plugins:
argument load vimrc files load plugins ~
(nothing) yes yes
-u NONE no no
-u NORC no yes
--noplugin yes no
Quizás esto también podría ser útil (de help: :set
):
When ''verbose'' is non-zero, displaying an option value will also tell where it
was last set. Example: >
:verbose set shiftwidth cindent?
< shiftwidth=4 ~
Last set from modeline ~
cindent ~
Last set from /usr/local/share/vim/vim60/ftplugin/c.vim ~
quizás... :-)
Editar
¿Estás utilizando compatible
? Desde help: formatoptions
NOTE: This option is set to the Vi default value when ''compatible'' is
set and to the Vim default value when ''compatible'' is reset.