Me gusta que las líneas largas se muestren en más de una línea terminal; No me gusta que vim inserte nuevas líneas en mi texto real. ¿Qué parte de .vimrc debería cambiar?
Para mayor claridad: le gusta que las líneas largas se muestren en más de una línea terminal; no le gusta que vim inserte nuevas líneas en su texto real? Si es así, entonces :set nowrapes lo contrario de lo que quieres :(.
Andrew Aylett
@ Andrew: sí, su resumen es exactamente lo que quiero
Haiyuan Zhang
Respuestas:
304
Utilizar
:set wrap
Para ajustar las líneas visualmente, es decir, la línea sigue siendo una línea de texto, pero Vim la muestra en varias líneas.
Utilizar
:set nowrap
Para mostrar líneas largas como una sola línea (es decir, debe desplazarse horizontalmente para ver la línea completa).
Gracias por los consejos chicos. Fui con: set nowrap y: set textwidth = 0 funciona muy bien
Robert Beltran
55
Cuando escribo, todavía quiero ver el límite "visual" de 80 columnas y no quiero que vim agregue automáticamente el avance de línea cuando escribo después de la columna 80. ¿Como lo hago?
Olivier Pons
77
Esta es exactamente la respuesta que estaba buscando, pero no es la respuesta a la pregunta de OP. Es un poco engañoso tener esto como la respuesta principal. No sé cómo solucionar esta situación. Simplemente editaría su respuesta para responder también la pregunta original. Pero ya hay una respuesta adecuada que es casi tan votada. Así que voté para cambiar las dos respuestas.
Daniel Darabos
3
Esta es exactamente la respuesta que no buscaba, y es no la respuesta a la pregunta del PO.
peeol el
Esta no es una respuesta a la pregunta.
194
Me gusta que las líneas largas se muestren en más de una línea de terminal.
Este tipo de ajuste de línea visual / virtual se habilita con la wrapopción de ventana:
set wrap
No me gusta que vim inserte nuevas líneas en mi texto real.
Para desactivar el ajuste de línea física, desactive las opciones de búfer textwidthy wrapmargin:
¡Gracias! set textwidth=0 wrapmargin=0funciona pero si lo pongo .vimrc, no tiene un efecto, por ejemplo, para archivos de texto sin formato. ¿Cómo descubro y elimino la sobrescritura?
qubodup
77
@qubodup Puede probar si algo sobrescribe su configuración .vimrc abriendo un archivo donde ve el problema e ingresando :verbose set textwidth? wrapmargin?. Esto le dirá sus valores actuales y también dónde se establecieron. Es posible que tenga un complemento que los anula. En ese caso, puede desinstalar ese complemento o intentar anular la configuración del complemento más adelante en su runtimepath (por ejemplo:) ~/.vim/aftero con su propio autocomando. El enfoque correcto dependerá de dónde / cómo se restablezca.
Laurence Gonsalves
set wrapy set linebreakes lo que hizo por mí
Ilia Choly
36
No estoy seguro de entender por completo, pero es posible que esté buscando la configuración de 'formatoptions'. Intenta algo como :set formatoptions-=t. La topción insertará saltos de línea para hacer que el texto se ajuste al ancho establecido por textwidth. También puede poner este comando en su .vimrc, simplemente elimine los dos puntos ( :).
Esta me parece la mejor opción para abordar el deseo del OP. Me gusta el hecho de que vim todavía muestra una línea vertical en tw.
mitchus
3
Esta es la única respuesta que realmente aborda la pregunta de OP. La mayoría de los demás hacen lo contrario. OP todavía quiere que se muestren líneas largas envueltas, pero para que vim no inserte saltos de línea automáticamente.
Quiero exactamente lo contrario ... cuando escribo todavía quiero ver el límite "visual" de 80 columnas y no quiero que vim agregue automáticamente el avance de línea cuando escribo después de la 80.a columna. ¿Como lo hago?
Olivier Pons
16
Puede que te resulte set lbrútil; con set wrapesto se ajustará pero solo se cortará la línea en el espacio en blanco y no en el medio de una palabra.
p.ej
without lbr the li
ne can be split on
a word
y
with lbr on the
line will be
split on
whitespace only
Se recomienda encarecidamente evitar abreviar opciones porque en el futuro tendrá que hacer una búsqueda en el sistema de ayuda para comprender lo que ha resuelto, así que use en set nolinebreaklugar deset lbr
SergioAraujo
12
set formatoptions-=t Mantiene el ancho de texto visual pero no agrega una nueva línea en el modo de inserción.
Es extraño que un entorno tan simple requiera esta cantidad de 'hocus-pocus' para funcionar.
Para responder a su pregunta ahora, para mí parecía funcionar con la combinación de lo siguiente:
:set wrap linebreak nolist
(Esto parece evitar que las líneas existentes se rompan, solo ajuste).
Y
set formatoptions=l
(esto evita que las líneas nuevas / editadas se rompan, mientras que + = no lo hace por mí, ya que otras configuraciones / complementos parecen encontrar espacio y agregar sus propias opciones que anulan las mías).
Si, como yo, está ejecutando gVim en Windows, entonces su archivo .vimrc puede estar obteniendo otro archivo Vimscript 'de ejemplo' que se configura automáticamente textwidth(en mi caso, para 78) archivos de texto.
textwidth=78
Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim
En vimrc_example.vim , encontré las líneas relevantes:
" Only do this part when compiled with support for autocommands.
if has("autocmd")
...
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
...
Y descubrí que mi .vimrc está buscando ese archivo:
source $VIMRUNTIME/vimrc_example.vim
En mi caso, no quiero textwidthconfigurar ningún archivo, así que solo comenté la línea relevante en vimrc_example.vim .
En lugar de editar el archivo vimrc_example.vim, acabo de agregar autocmd FileType text setlocal textwidth=0al archivo vimrc y eso solucionó el problema cuando otras soluciones propuestas no lo hicieron.
GrandAdmiral
3
Es correcto que establecer nowrap le permitirá pegar en una línea larga sin vi / vim agregando nuevas líneas, pero luego la línea no se ajusta visualmente para una fácil lectura. En cambio, es solo una línea larga por la que debe desplazarse.
Para que la línea se ajuste visualmente pero no se inserten caracteres de nueva línea, establezca el ajuste (que probablemente sea el predeterminado, por lo que no es necesario establecer) y establezca textwidth = 0 .
En algunos sistemas, la configuración de textwidth = 0 es la predeterminada. Si no encuentra que ese sea el caso, agregue set textwidth = 0 a su archivo .exrc para que se convierta en el valor predeterminado del usuario para todas las sesiones vi / vim.
:set nowrap
es lo contrario de lo que quieres :(.Respuestas:
Utilizar
Para ajustar las líneas visualmente, es decir, la línea sigue siendo una línea de texto, pero Vim la muestra en varias líneas.
Utilizar
Para mostrar líneas largas como una sola línea (es decir, debe desplazarse horizontalmente para ver la línea completa).
fuente
Este tipo de ajuste de línea visual / virtual se habilita con la
wrap
opción de ventana:Para desactivar el ajuste de línea física, desactive las opciones de búfer
textwidth
ywrapmargin
:fuente
set textwidth=0 wrapmargin=0
funciona pero si lo pongo.vimrc
, no tiene un efecto, por ejemplo, para archivos de texto sin formato. ¿Cómo descubro y elimino la sobrescritura?:verbose set textwidth? wrapmargin?
. Esto le dirá sus valores actuales y también dónde se establecieron. Es posible que tenga un complemento que los anula. En ese caso, puede desinstalar ese complemento o intentar anular la configuración del complemento más adelante en su runtimepath (por ejemplo:)~/.vim/after
o con su propio autocomando. El enfoque correcto dependerá de dónde / cómo se restablezca.set wrap
yset linebreak
es lo que hizo por míNo estoy seguro de entender por completo, pero es posible que esté buscando la configuración de 'formatoptions'. Intenta algo como
:set formatoptions-=t
. Lat
opción insertará saltos de línea para hacer que el texto se ajuste al ancho establecido portextwidth
. También puede poner este comando en su.vimrc
, simplemente elimine los dos puntos (:
).fuente
tw
.Uso
:set nowrap
... funciona como un encanto!fuente
:set tw=0
VIM no insertará automáticamente saltos de línea, pero mantendrá el ajuste de línea.
fuente
Puede que te resulte
set lbr
útil; conset wrap
esto se ajustará pero solo se cortará la línea en el espacio en blanco y no en el medio de una palabra.p.ej
y
fuente
set nolinebreak
lugar deset lbr
set formatoptions-=t
Mantiene el ancho de texto visual pero no agrega una nueva línea en el modo de inserción.fuente
Es extraño que un entorno tan simple requiera esta cantidad de 'hocus-pocus' para funcionar.
Para responder a su pregunta ahora, para mí parecía funcionar con la combinación de lo siguiente:
(Esto parece evitar que las líneas existentes se rompan, solo ajuste).
Y
(esto evita que las líneas nuevas / editadas se rompan, mientras que + = no lo hace por mí, ya que otras configuraciones / complementos parecen encontrar espacio y agregar sus propias opciones que anulan las mías).
fuente
Si, como yo, está ejecutando gVim en Windows, entonces su archivo .vimrc puede estar obteniendo otro archivo Vimscript 'de ejemplo' que se configura automáticamente
textwidth
(en mi caso, para78
) archivos de texto.Mi respuesta a una pregunta similar a esta: cómo detener el texto de ajuste de gVim en la columna 80 , en el sitio Vi y Vim Stack Exchange :
fuente
autocmd FileType text setlocal textwidth=0
al archivo vimrc y eso solucionó el problema cuando otras soluciones propuestas no lo hicieron.Es correcto que establecer nowrap le permitirá pegar en una línea larga sin vi / vim agregando nuevas líneas, pero luego la línea no se ajusta visualmente para una fácil lectura. En cambio, es solo una línea larga por la que debe desplazarse.
Para que la línea se ajuste visualmente pero no se inserten caracteres de nueva línea, establezca el ajuste (que probablemente sea el predeterminado, por lo que no es necesario establecer) y establezca textwidth = 0 .
En algunos sistemas, la configuración de textwidth = 0 es la predeterminada. Si no encuentra que ese sea el caso, agregue set textwidth = 0 a su archivo .exrc para que se convierta en el valor predeterminado del usuario para todas las sesiones vi / vim.
fuente