Tengo dos líneas en un archivo de texto como a continuación:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Quiero agregar las dos líneas en vi como a continuación:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
La segunda línea se eliminó y el contenido de la segunda línea se agregó a la primera línea.
¿Cómo podría hacerlo usando el modo de comando en vi?
GJ
invim
se moverá a la última línea y luego intentará unirla a la siguiente línea, el único lugar donde un comando de unión no tiene sentido. Sí, esto me pareció divertido :-)Vi o Vim?
De todos modos, el siguiente comando funciona para Vim en modo 'no compatible'. Es decir, supongo, casi puro vi.
Si quieres hacerlo desde el comando normal usa
Con 'gJ' puede unir líneas como están, sin agregar o eliminar espacios en blanco:
Resultado:
Con el comando 'J' tendrás:
Observe el espacio entre
type>
y_ID
.fuente
g/pattern/join
funciona en VIM mientrasg/pattern/J
que no. Podría ayudar a algunas personas futuras.Esto debería hacerlo:
J
fuente
:h J
le dirá cómo deshabilitar esa función.gJ
si no desea que vim agregue un espacio al unir las líneasEn vi,
J
(eso es Shift+ J) o:join
debería hacer lo que quieras, en su mayor parte. Tenga en cuenta que ajustan los espacios en blanco.En particular, terminará con un espacio entre las dos líneas unidas en muchos casos, y si la segunda línea tiene sangría, esa sangría se eliminará antes de unirse.En Vim también puedes usar
gJ
( G, luego Shift+ J) o:join!
. Estos unirán líneas sin hacer ningún ajuste de espacio en blanco.En Vim, ver
:help J
para más información.fuente
gJ
yJ
es que tanto chang el cursor hasta el punto de unión, pero:join!
y:join
no haga.Simplemente reemplace el "
\n
" con "".En vi / Vim para cada línea del documento:
Si desea confirmar cada reemplazo:
fuente
Si desea unir las líneas seleccionadas (está en modo visual), simplemente presione
gJ
para unir sus líneas sin espacios en absoluto.Esto se describe con mayor detalle en el sitio vi / Vim Stack Exchange .
fuente
Presione Shift+ 4("$") en la primera línea, luego Shift+ j("J").
Y si quieres ayuda, entra en vi y luego presiona F1.
fuente
En Vim también puedes usar
gJ
.ََ
fuente
Otra forma de unir dos líneas sin colocar el cursor en esa línea es:
Aquí 6 es el número de línea al que se unirá otra línea. Para mostrar el número de línea, use
:set nu
.Si estamos en el cursor donde se debe unir la siguiente línea, entonces:
En ambos casos no necesitamos
g
like:s#\n##g
, porque en una línea solo\n
existe una .fuente
Shift+V
para seleccionar todas las líneas que se van a unir, excepto la última, y luego,:'<,'>s/\n/, /
en este ejemplo, unir líneas al colocar una coma y un espacio al final de cada una. Tenga en cuenta que cuando se selecciona algo y escribimos:
en modo normal, entonces'<,'>
aparece automáticamente en la línea de comando.