Estaba viendo esta publicación que describe cómo envolver palabras completas en vim. La solución aceptada fue esta:
:set formatoptions=l
:set lbr
Lo que toma este texto (las pestañas se muestran como \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will wr|ap here
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Esto logra un comportamiento como este (las pestañas se muestran como \ t):
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|wrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
Sin embargo, me gustaría redefinir esta función. Me gustaría que la línea envuelta tenga el mismo número de pestañas delante que la línea de arriba tiene más uno. Es decir:
*Inside of window *Outside of window
|---------------------------------------|
|\t\tthis is a like of text that will |
|\t\t\twrap here |
|\t\tcan you see the wrap |
| |
|---------------------------------------|
¿Algunas ideas?
Respuestas:
El parche breakindent tiene lo que estás buscando. Lo apliqué con éxito usando las instrucciones que se encuentran en este hilo:
Patch Vim con el parche breakindent en OS X con Homebrew
Específicamente, la fórmula Homebrew de echristopherson.
Sé que este hilo es antiguo, pero es popular en Google y lo encontré varias veces al intentar encontrar una solución.
EDITAR: Este parche ahora se incluye con vim como parche 7.4.338. Ver: https://retracile.net/blog/2014/07/18/18.00
En Yosemite (Mac OS X), usé el comando de snowbound con hombrew:
fuente
brew install macvim --with-features=huge --override-system-vim --HEAD
Esto no funcionó cuando se hizo la pregunta originalmente, pero a partir del 25 de junio de 2014, funcionará. (Suponiendo que actualice su vim a una versión más reciente que esa fecha)
Agregue a su .vimrc:
¡Y eso es!
-
Algunas personas (incluido yo mismo) comparten un solo .vimrc en varias computadoras. En ese caso, es importante que esta línea sea sólida (para evitar molestos mensajes de error). Esto es un poco mejor:
De esta manera, si tiene una versión anterior de vim, no recibirá un mensaje de error.
fuente
if has("patch-7.4.354")
Lo mejor que obtendrá es la
showbreak
opción que pondrá una cadena fija delante de cada línea envuelta (yo usoset showbreak=...
).fuente
:help 'showbreak'
, no, no puedes,showbreak
es solo una cadena.Estoy de acuerdo con la respuesta que dice que 'showbreak' es la mejor opción. Por lo general, Showbreak no le permite poner caracteres no imprimibles (por ejemplo, espacios o tabulaciones) en la cadena de showbreak, por lo que, como se usa normalmente, solo le dará un indicador a lo largo del margen izquierdo, es decir, sin sangría real. Esto no es genial, ya que el objetivo principal de OP, creo, es darle a las líneas envueltas una sangría para evitar que abarroten el área del margen izquierdo y parezcan líneas propias.
Entonces, una forma de agregar una sangría (fea) usando showbreak es simplemente usar muchos caracteres, .eg, ": set showbreak => --------------->". Esto da como resultado algo parecido a esto:
Una mejor alternativa podría ser utilizar caracteres de espacio que no se rompan (suponiendo que su instancia de Vim esté habilitada para Unicode), cada uno de los cuales se puede ingresar en la cadena showbreak usando la secuencia de teclas ctrl-v, 160. De esa manera, puede ingresar una cadena de showbreak que está en blanco en el lado izquierdo y parece ser una sangría verdadera. Por ejemplo, ": establece showbreak =........... >>" donde cada '.' en el comando es en realidad un carácter de espacio no separable que se ingresa presionando ctrl-V, 160. De esa manera, terminará con una envoltura que tiene una buena sangría, como esta:
Aún no tiene la capacidad de variar el nivel de sangría de acuerdo con la sangría de la línea anterior, pero al menos obtiene una sangría limpia de las líneas envueltas sin mucho desorden visual a lo largo del margen izquierdo de la ventana. Aún podría haber confusión si la sangría de una línea ajustada es menor que la del comienzo de una línea real, pero esto quizás podría evitarse haciendo que la "sangría" de showbreak sea bastante grande (es decir, mayor que cualquier sangría que se encuentre comúnmente en su código ) pero lo suficientemente pequeño como para proporcionar suficiente espacio para un ajuste legible del texto. Para muchos usos, creo que una sangría de 40 o 50 espacios haría esto bastante bien.
fuente
:set showbreak=\ \ \ \
. Sin embargo, todavía no funciona con pestañas.