Com o vim, como posso mover um texto para um novo arquivo? Por enquanto, faço isso:
- selecione o texto
- usar
:w new_file
- selecione o texto novamente
- apague o texto
Existe uma maneira mais eficiente de fazer isso?
Antes
a.txt
sometext
some other text
some other other text
end
Depois de
a.txt
sometext
end
b.txt
some other text
some other other text
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 newfile
para criar um novo arquivo contendo o texto de marcaa
para marcab
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
d
comando::5,50 d
excluir o texto da linha 5 para a linha 50:'a,'b d
para excluir o texto de marcaa
para 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 comandosnew
- abre um novo buffer+put! "
- coloque o conteúdo do registrador sem nome ("
) no buffer!
) 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.fonte
'<,'>d | new | 0put "
à clareza.Baseado na resposta da @ embedded.kyle e este Q & A , acabei com este um forro para anexar uma seleção para um arquivo e excluir do arquivo atual. Depois de selecionar algumas linhas com
Shift+V
, pressione:
e execute:A primeira parte anexa as linhas selecionadas. O segundo comando entra no modo normal e é executado
gvd
para selecionar a última seleção e, em seguida, exclui.fonte
Selecione o texto no modo visual e pressione ypara "puxá-lo" para o buffer (cópia) ou dpara "excluí-lo" para o buffer (cortar).
Depois, é possível
:split <new file name>
dividir a janela do vim e pressionar ppara colar o texto arrancado. Escreva o arquivo normalmente.Para fechar a divisão novamente, passe a divisão que deseja fechar
:q
.fonte
:x
, poderá combinar a escrita e o fechamento em uma e fazer cinco etapas. : P