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


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

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


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 .


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

12

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


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

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.


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.

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.