¿Por qué no puedo evitar que vim envuelva mi código?

115

No puedo evitar que vim envuelva mi código Python. Si entro :set nowrapcomo un campeón, pero aún envuelve.

Puedo presionar Jpara unir las líneas de código divididas, por lo que parece que se está insertando un retorno de carro real. Simplemente no entiendo por qué o cómo detenerlo.

David Berger
fuente
15
:set nowrapsolo evita que envuelva la visualización de líneas, no que inserte saltos de línea.
rampion

Respuestas:

115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Si se refiere al ajuste automático de líneas largas y las envía a la siguiente, intente

:set textwidth=0 
:set wrapmargin=0
Stefano Borini
fuente
12
Algunos complementos parecen anular esta configuración.
Yzmir Ramirez
Las opciones twy wprealmente no funcionaron para mí, así que tuve que ir a formatoptions github.com/ain/.vim/blob/…
Ain Tohvri
2
Si tw y wp todavía no resuelve el problema de tener un vistazo a este mensaje el SU que ayudó a resolver mi problema: superuser.com/questions/250112/...
Alien_SM
3
Quitar filetype plugin onde mi lo .vimrchizo por mí.
1
Con esta respuesta, no puede usar gqpara realinear el párrafo manualmente al ancho de texto. @ Engineero's debería ser el correcto.
Dylanthepiguy
86

Ninguna de las otras respuestas funcionó para mí (IDK por qué).

:set wrap! Me hizo el truco (usando GVim para Windows).

Knomo Seikei
fuente
8
Esto resuelve un problema ligeramente diferente. wrapproporciona la apariencia de ajuste de línea, pero en realidad no divide el texto en nuevas líneas. Probablemente lo había wraphabilitado, así que :set wrap!lo desactivó. Puede comprobar con :set wrap?cuál se hará eco del valor actual (es decir, wrapo nowrap).
Shadowtalker
1
Esta solución me funciona en Mac OsX. Vim versión 7.4
Shnkc
Esto funcionó para mí, cambié textwidthy wrapmarginprimero, pero esto en realidad obligó a vim a actualizar y volver a renderizar sin líneas envueltas.
Kredns
¡Ding din ding! Funciona en neovim
Gjaa
Qué momento tan mágico cuando descubres que el comando que realmente necesitas es tan expresivo y simple. Gracias a los desarrolladores
Capitan Empanada
57

set formatoptions-=tdebería hacer el truco. set formatoptions+=tvolverá a activar el ajuste automático.

Para obtener más información sobre lo que puede hacer formatoptions, consulte los documentos .

Ingeniero
fuente
2
¡Gracias! Tu solución es la única que funcionó para mí. Vim ya no inserta nuevas líneas a veces cuando entro en el modo de inserción.
Geremia
2
Sip. Ésta es la verdadera solución.
Russ Bateman
16

Para evitar que vim envuelva líneas largas, utilizo estas dos líneas en mi .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing
gon1332
fuente
12

Para deshabilitar el ajuste de línea, puede ingresar :set wrap!o agregar este comando a su ~/.vimrc.

Mapsy
fuente
2
Esto no afecta la inserción automática de saltos de línea reales, de lo que trata esta pregunta.
Arthur Tacca
9

Tal vez sea el ancho de texto que se establece, que automáticamente rompe las líneas cuando alcanza una cierta longitud.

:set tw=0

Si eso falla, juega con eg

:set wrap linebreak textwidth=0 

y

:set virtualedit=insert
nos
fuente
2
wrap y linebreak no insertan finales de línea reales en el búfer, por lo que ese no parece ser su problema.
A. Levy
0

Abra vimrc_example.vim (Sí, este es el archivo en Vim74) y establezca textwidth = 0.

Poli
fuente
0

En macbook pro, superé en .vimrc la línea

autocmd FileType text setlocal textwidth=78

así que se convirtió

"  autocmd FileType text setlocal textwidth=78

.

(Instalé una versión de vim a través de homebrew.) Esto ayudó para todos los archivos .txt.

feli_x
fuente