Quiero desenvolver el texto en Vim. Cuando uní líneas, obtuve un espacio adicional entre oraciones.¿Por qué Vim agrega espacios al unir líneas?
¿Por qué es eso?
Quiero desenvolver el texto en Vim. Cuando uní líneas, obtuve un espacio adicional entre oraciones.¿Por qué Vim agrega espacios al unir líneas?
¿Por qué es eso?
El formateo destruye la información. Hay muchos bloques de texto diferentes que darán como resultado el mismo formato una vez formateado. Por lo tanto, no hay forma de revertir la operación sin conocimiento previo (es decir, deshacer).
sin formato:
Unformatted text could start out as either all one line, or several, yet look the same when formatted.
Unformatted text could start out as either all one line, or several,
yet look the same when formatted.
con formato:
Unformatted text could start out as
either all one line, or several,
yet look the same when formatted.
Si desea que su párrafo en una sola línea, o si estás bien con un poco de tocar el violín manual, puede utilizar J
para unirse líneas de nuevo juntas. Puede usar el modo visual para aplicar el comando J
a varias líneas a la vez, quizás combinado con ap
o ip
para seleccionar un párrafo, p. vipJ
. De nuevo, aún perderá algo de información: múltiples espacios en los saltos de línea antes de que el formateo termine colapsando en espacios únicos. (En realidad puede unirse sin modificar mediante el uso de espacios en lugar de gJ
J
, pero usted ya les ha perdido cuando haya formateado)
Si usted está preocupado por los espacios adicionales después de las oraciones (las líneas que terminan en!,?, o.), apague joinspaces: set nojoinspaces
Muchas gracias. Ya intenté unir líneas, pero lo que me molesta es que de repente se producen espacios múltiples entre oraciones después de unir líneas. – binOr
Entonces la respuesta a su pregunta es simplemente para deshacer los espacios de unión: ': establecer nojoinspaces' – Cascabel
¡Definitivamente, gracias! No estaba familiarizado con estos 2 espacios después de una oración. – binOr
tengo la sensación de que esto es lo que realmente quiere: gJ
De :h gJ
:
gJ Join [count] lines, with a minimum of two lines.
Don't insert or remove any spaces. {not in Vi}
Esto es útil si ha copiado algo de un terminal y lo ha pegado como un gran bloque rectangular en vim, en lugar de una sola línea.
Normalmente lo uso en modo visual. Cosas de Hilight, gJ.
Esta es la respuesta correcta. La respuesta aceptada no funcionó para mí. – Jonah
Mismo. nojoinspaces no tuvo ningún efecto. Tuve que macro Jx para eliminar cada espacio. –
This es la respuesta que terminó trabajando para mí, ninguna de las anteriores funcionó en mi caso de uso.
Esencialmente, use gJ como muchos otros han dicho, pero resalte todo el archivo, de modo que en el modo de comando escriba ggVGgJ.
supongo que la solución simple para unirse a las líneas sin espacios entre es:
:j!
Con !
la combinación no insertar o eliminar cualquier espacio. Para todo el archivo, use :%j!
.
Ver: :help :join
.
Todavía obtuve el espacio extra después de unirme, si la línea en la que trabajamos no termina con espacio. Por lo general, este es el comportamiento deseado.Ejemplo
first line without space
second line
después de unirse con J
, se convierten en
first line without space second line
Aunque en algún caso, no queremos aplicarlo,
myInstance->methodA()
->methodB()
Y querría que la unión para convertirse en myInstance->methodA()->methodB()
sin ningún espacio intermedio!
Aquí el mapeo ayudantes yo uso
nmap <leader>jj Jx
< líder clave > se puede comprobar con :let mapleader
, por defecto a la tecla \
creo.
por lo que en el modo normal, solo \jj
para realizar unir sin ningún espacio extra!
no es broma. tengo ayuda Gracias. – binOr