2011-02-27 18 views
13

Esto se siente como una pregunta tonta, pero no puedo encontrar una respuesta en Internet (o en la ayuda VIM). Estoy usando VIM 7.2 en Mac OS X. Todo lo que quiero hacer es envolver mis líneas a 72 caracteres, pero haciendoVIM textwidth no tiene ningún efecto

:set textwidth=72 

no tiene ningún efecto. El ancho de texto se está configurando correctamente (puedo verlo cuando solo consulto ": establecer ancho de texto"), pero ni las líneas existentes ni las nuevas líneas que escribo después de establecer el ancho de texto se envuelven. Si comienzo una nueva línea, todavía no se ajusta. Abre y cierra el archivo, sin cambios. También lo intenté: establecer wrapmargin = 72 (con textwidth = 0), sin efecto.

¿Qué me falta aquí?

Respuesta

8

Lo 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.

Por ejemplo, si está editando un archivo de origen C, las reglas de sangría C reemplazan a textwidth.

+2

También intente ':' set pasta?. Ese también puede interferir. – patrickvacek

+0

Para mí fue ': set paste' que he mapeado a una secuencia de líder. Gracias @patrickvacek – OregonTrail

5

Vim no hará nada menos que sea solicitado. textwidth tendrá un efecto para las líneas editadas actualmente si tiene t (solo para comentarios), c (para comentarios solamente) o ambos en formatoptions (si a no está presente, entonces se autoenrollará solo cuando llegue al margen establecido por textwidth), o si usa gq para reformatear su texto. Si no me estoy equivocando, puede configurar formatexpr o formatprg de manera que se ignore textwidth.

9

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

  • gg significa: ir al principio de tampón
  • gq significa: formatear el texto incluido en el movimiento
  • G significa: ir al final de la memoria intermedia

(Será funciona si las opciones de formato están configuradas correctamente, como se detalla en la publicación de Zyx)

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

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

6

Estaba buscando una respuesta a la misma pregunta y tuve que luchar un poco antes de encontrar la solución en los documentos de VIM. Por lo tanto, pensé que iba a actualizar el hilo y salvar a otros el tiempo.

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

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

Estos son los pasos que he seguido:

1) averiguar lo que su formatoptions actuales (en el interior vim)

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

2) crear un archivo filetype.vim según lo sugerido por 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) añadir la línea :set formatoptions+=t & & :set textwidth=79 en ese archivo.

Voila! la próxima vez que abras el archivo, establecerá el ancho de texto a tus caracteres deseados.

Como un auxiliar de depuración, siempre puede verificar qué archivo está anulando su configuración de vimrc anteponiendo su comando con verbose. Entonces, por ejemplo, si quiero comprobar que actualiza los formatoptions pasado, tendría que escribir

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

tuve este problema exactamente el mismo y encontré la siguiente resolvió el problema lo suficientemente bien como para mí:

autocmd FileType python setlocal textwidth=79 formatoptions+=t 

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

Ver :h fo-table para los detalles de formatoptions

Cuestiones relacionadas