Con vim, ¿cómo puedo mover un fragmento de texto a un nuevo archivo? Por el momento, hago esto:
- selecciona el texto
- utilizar
:w new_file
- selecciona el texto nuevamente
- borrar el texto
¿Hay una manera más eficiente de hacer esto?
antes de
a.txt
sometext
some other text
some other other text
end
Después
a.txt
sometext
end
b.txt
some other text
some other other text
Al "mover un fragmento de texto a un nuevo archivo", supongo que quiere decir cortar ese fragmento de texto del archivo actual y crear un nuevo archivo que contenga solo ese texto.
Varios ejemplos:
:1,1 w new_file
para crear un nuevo archivo que contenga solo el texto de la línea número 1:5,50 w newfile
para crear un nuevo archivo que contenga el texto de la línea 5 a la línea 50:'a,'b w newfile
para crear un nuevo archivo que contenga el texto de marcaa
a marcab
Lo anterior solo copia el texto y crea un nuevo archivo que contiene ese texto. Luego tendrá que eliminar después.
Esto se puede hacer usando el mismo rango y el
d
comando::5,50 d
para eliminar el texto de la línea 5 a la línea 50:'a,'b d
para eliminar el texto de marcaa
a marcab
O utilizando ddpara el caso de una sola línea.
Si, en cambio, selecciona el texto usando el modo visual y luego presiona
:
mientras el texto está seleccionado, verá lo siguiente en la línea de comando::'<,'>
Que indica el texto seleccionado. Luego puede expandir el comando para:
:'<,'>w >> old_file
Que añadir el texto a un archivo existente. Luego elimine como se indica arriba.
Un trazador de líneas:
:2,3 d | new +put! "
El desglose:
:2,3 d
- eliminar líneas 2 a 3|
- técnicamente, esto redirige la salida del primer comando al segundo comando, pero dado que el primer comando no genera nada, solo estamos encadenando los comandos juntosnew
- abre un nuevo búfer+put! "
- poner el contenido del registro sin nombre ("
) en el búfer!
) está ahí para que el contenido se coloque antes de la línea actual. Esto provoca una línea vacía al final del archivo. Sin ella, hay una línea vacía en la parte superior del archivo.fuente
'<,'>d | new | 0put "
para mayor claridad.Basado en la respuesta de @ embedded.kyle y estas preguntas y respuestas , terminé con este revestimiento para agregar una selección a un archivo y eliminarlo del archivo actual. Después de seleccionar algunas líneas con
Shift+V
, presiona:
y corre:La primera parte agrega líneas seleccionadas. El segundo comando ingresa al modo normal y se ejecuta
gvd
para seleccionar la última selección y luego se elimina.fuente
Seleccione el texto en modo visual, luego presione ypara "tirarlo" al búfer (copiar) o dpara "borrarlo" al búfer (cortar).
Luego puede
:split <new file name>
dividir su ventana vim y presionar ppara pegar el texto arrancado. Escribe el archivo como de costumbre.Para cerrar la división nuevamente, pase la división que desea cerrar
:q
.fuente
:x
lugar, puede combinar la escritura y el cierre en uno y hacer cinco pasos. : P