Ao "mover um pedaço de texto para um novo arquivo", presumo que você queira recortar 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 à linha 50
:'a,'b w newfilepara criar um novo arquivo contendo o texto de marca apara marcab
- defina suas marcas usando mae mbonde quiser
O texto acima copia apenas o texto e cria um novo arquivo contendo esse texto. Você precisará excluir posteriormente.
Isso pode ser feito usando o mesmo intervalo e o dcomando:
:5,50 d excluir o texto da linha 5 para a linha 50
:'a,'b dpara excluir o texto de marca apara marcab
Ou usando ddpara o caso de linha única.
Se você selecionar o texto usando o modo visual e pressionar :enquanto o texto estiver selecionado, verá o seguinte na linha de comando:
:'<,'>
O que indica o texto selecionado. Você pode expandir o comando para:
:'<,'>w >> old_file
O qual anexará o texto a um arquivo existente. Em seguida, exclua como acima.
Um forro:
:2,3 d | new +put! "
O colapso:
:2,3 d - exclua as linhas 2 a 3
| - tecnicamente, isso redireciona a saída do primeiro comando para o segundo comando, mas como o primeiro comando não gera nada, estamos apenas encadeando os comandos
new - abre um novo buffer
+put! "- coloque o conteúdo do registrador sem nome ( ") no buffer
- O bang (
!) existe para que o conteúdo seja colocado antes da linha atual. Isso causa uma linha vazia no final do arquivo. Sem ele, há uma linha vazia na parte superior do arquivo.