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.