Por "mover um pedaço de texto para um novo arquivo", presumo que você queira cortar esse pedaço de texto do arquivo atual e criar um novo arquivo contendo apenas esse texto.
Vários exemplos:
-
:1,1 w new_file para criar um novo arquivo contendo apenas o texto da linha número 1
-
:5,50 w newfile para criar um novo arquivo contendo o texto da linha 5 para a linha 50
-
:'a,'b w newfile para criar um novo arquivo contendo o texto da marca a para marcar b
- defina suas marcas usando ma e mb onde você quiser
O texto acima apenas copia o texto e cria um novo arquivo contendo esse texto. Você precisará excluir depois.
Isso pode ser feito usando o mesmo intervalo e o comando d :
-
:5,50 d para excluir o texto da linha 5 para a linha 50
-
:'a,'b d para excluir o texto da marca a para marcar b
Ou usando dd para o caso de linha única.
Se você, em vez disso, selecionar o texto usando o modo visual e, em seguida, pressionar : enquanto o texto estiver selecionado, você verá o seguinte na linha de comando:
:'<,'>
Qual indica o texto selecionado. Você pode então expandir o comando para:
:'<,'>w >> old_file
Que irá anexar o texto a um arquivo existente. Em seguida, exclua como acima.
Um forro:
:2,3 d | new +put! "
A divisão:
-
:2,3 d - excluir linhas de 2 a 3
-
| - tecnicamente isso redireciona a saída do primeiro comando para o segundo comando, mas como o primeiro comando não produz nada, estamos apenas encadeando os comandos juntos
-
new - abre um novo buffer
-
+put! " - coloca o conteúdo do registrador sem nome ( " ) no buffer
- O estrondo (
! ) está lá para que o conteúdo seja colocado antes da linha atual. Isso faz com que e linha vazia no final do arquivo. Sem ele, há uma linha vazia na parte superior do arquivo.