write since last e37 commands change unix vim text-editor

unix - commands - e37 no write since last change add to override



El ancho de texto VIM no tiene efecto (6)

Esto parece una pregunta tonta, pero no puedo encontrar una respuesta en Internet (o en la ayuda de VIM). Estoy usando VIM 7.2 en Mac OS X. Todo lo que quiero hacer es envolver mis líneas en 72 caracteres, pero haciendo

:set textwidth=72

no tiene efecto. El ancho de texto se establece correctamente (puedo ver que cuando solo pregunto ": establecer ancho de texto"), pero no se ajustan las líneas existentes ni las nuevas que escribo después de configurar el ancho de texto. Si empiezo una nueva línea, todavía no se ajusta. Abre y cierra el archivo, sin cambios. También he intentado: set wrapmargin = 72 (con textwidth = 0), sin efecto.

¿Que me estoy perdiendo aqui?


Estaba buscando una respuesta a la misma pregunta y tuve que revolver un poco antes de encontrar la solución en los documentos VIM. Entonces, pensé que actualizaría el hilo y le ahorraría a otros el tiempo.

El problema en mi caso fue que el ftplugin predeterminado estaba deshabilitando el ancho de texto.

Simplemente actualizar su .vimrc con ( :set tw=79 && :set formatoptions+=t ) no funcionará ya que los fplugins se obtienen después de vimrc.

Aquí están los pasos que seguí:

1) averigüe cuáles son sus opciones de formato actuales (dentro de vim)

:set formatoptions? formatoptions=croql (note no ''t'')

2) cree un archivo filetype.vim como lo sugiere vimdocs ( http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule )

Overrule the settings after loading the global plugin. You must create a new filetype plugin in a directory from the end of ''runtimepath''. For Unix, for example, you could use this file: vim ~/.vim/after/ftplugin/fortran.vim In this file you can change just those settings that you want to change.

3) agregue la línea :set formatoptions+=t && :set textwidth=79 en ese archivo.

Voila! La próxima vez que abra el archivo, establecerá el ancho de texto en los caracteres que desee.

Como ayuda para la depuración, siempre puede verificar qué archivo está anulando la configuración de vimrc al anteponer su comando con verbose. Por ejemplo, si quiero comprobar quién actualizó las opciones de formato por última vez, escribiría

:verbose set formatoptions? formatoptions=croqlt Last set from ~/.vim/after/ftplugin/fortan.vim


Intente gggqG para aplicar el nuevo ancho de texto a todo el búfer.

  • gg significa: ir al principio del búfer
  • gq significa: reformatear el texto incluido en la moción
  • G significa: ir al final del búfer

(Funcionará si las opciones de formato se configuran correctamente, como se detalla en la publicación de Zyx)

Por otro lado, también puede mostrar su texto existente con un ancho de 72 caracteres agregando una línea de modeline al principio o al final de su archivo. Ver :help modeline

Algo como vim:tw=72 debería funcionar.


Que hace

:set formatexpr? :set indentexpr? :set cindent? :set filetype? :set paste? :filetype

impresión.

Al menos uno de ellos (y creo que todos) anulará la configuración de textwidth de textwidth .

Por ejemplo, si está editando un archivo fuente de C, las reglas de sangría C anulan el textwidth .


Tuve este mismo problema y encontré el siguiente problema resuelto lo suficientemente bien para mí:

autocmd FileType python setlocal textwidth=79 formatoptions+=t

Siéntase libre de cambiar python para que sea su tipo de archivo de elección (por ejemplo, * o la lista separada por comas python,ruby,go,sh,javascript )

Ver :h fo-table para detalles de las formatoptions de formatoptions


Vim no hará nada a menos que sea solicitado. textwidth tendrá un efecto para las líneas editadas actualmente si tiene t (solo para no comentarios), c (solo para comentarios) o ambas formatoptions de formatoptions (si a no está presente allí, entonces se enviará automáticamente solo cuando llegue al margen configurado por textwidth de textwidth ), o si usa gq para reformatear su texto. Si no me equivoco, puede configurar formatexpr o formatprg para que el textwidth se ignore.


set formatoptions+=t

This puede ayudarte