Estou trabalhando com dois arquivos e preciso copiar algumas linhas de um arquivo e colar em outro arquivo. Eu sei como copiar (aa) e colar (p) no mesmo arquivo. Mas isso não funciona para arquivos diferentes. Como isso é feito?
Além disso, existe uma maneira de colar e colar? Eu tentei pesquisar no Google, mas a maioria dos recursos fala apenas de copiar e colar.
vim
copy-paste
vi
cut
macha
fonte
fonte
Respostas:
Como você já sabe como recortar / arrancar o texto, aqui estão algumas idéias para colá-lo novamente em outro arquivo:
:e /path/to/other/file
) e cole-oAbra os dois arquivos juntos em uma janela dividida e navegue entre eles usando Ctrl+ w, Up/ Downou:
vi -o /path/to/file1 /path/to/file2
fonte
Ctrl
+w
,s
.:sp myfile
dividir horizontalmente e abrir o arquivo especificado, mas como eu faria se preferisse dividir a janela verticalmente?Se você estiver usando o Vim no Windows, poderá obter acesso à área de transferência (MS copy / paste) usando:
"*dd - cortar uma linha (ou 3dd para cortar três linhas)
"*yy - copiar uma linha (ou 3 anos para copiar três linhas)
"*p - colar linha (s) na linha após o cursor
"*P - colar linha (s) na linha antes do cursor
Permite colar entre janelas separadas do Vim ou entre aplicativos Vim e PC ( bloco de notas , Microsoft Word etc.).
fonte
+
como registro da área de transferência do sistema de plataforma cruzada (Windows e Linux) vs.*
, que é apenas o Windows (+
funciona da mesma forma no Windows*
).Use as variações de
d
comodd
de cortar.Para escrever um intervalo de linhas em outro arquivo, você pode usar:
Onde
<n>
e<m>
são números (ou símbolos) que designam um intervalo de linhas.Para usar a área de transferência da área de trabalho, dê uma olhada nos
+g
comandos.fonte
ma
, vá para a última linhamb
,. Em seguida, acrescente'
a à letra da marca quando estiver usando o comando acima::'a,'b w filename
Você pode abrir o outro arquivo e tipo
:r file_to_be_copied_from
. Ou você pode armazenar em buffer. Ou vá para o primeiro arquivo, vá para a linha que deseja copiar, digite"qY
, vá para o arquivo que deseja colar e digitar"qP
."
buffer_name, copia para o buffer.Y
é puxar eP
é colocado. Espero que ajude!fonte
Aqui está uma maneira de fazer isso;
Você também pode ter os dois arquivos visíveis. Divida a tela com, por exemplo, Ctrl+w s .
Quanto ao corte, dcorta e coloca o material cortado no buffer de arranco. ddirá "cortar" uma linha.
fonte
Todas essas são ótimas sugestões, mas se você souber a localização do texto em outro arquivo, use sed com facilidade.
:r! sed -n '1,10 p' < input_file.txt
Isso inserirá 10 linhas em um arquivo já aberto na posição atual do cursor.fonte
:r ! head -n2 file.py
Ao editar o arquivo, marque onde deseja que o início e o fim estejam usando
ma
- define aa
marcamb
- define ob
marcaEm seguida, para copiar isso em outro arquivo, basta usar o
w
comando:fonte
Atualização 2017-05:
Acabei de descobrir que, se você adicionar a seguinte linha ao seu arquivo vimrc,
então o Vim está usando a área de transferência do sistema.
Acabei de descobrir que o arranco não funcionará no caminho em que copio o conteúdo entre diferentes janelas da instância do Vim. (Pelo menos, não funciona com base no meu conhecimento do Vim. Não sei se existe outra maneira de habilitá-lo para funcionar).
A maneira de arrancar funciona apenas na maneira em que vários arquivos são abertos na mesma janela, de acordo com o meu teste.
Se você quiser fazer isso, é melhor usar a maneira de copiar e colar o SO, como Ctrl+ x, Ctrl+ c(no Windows).
fonte
Esses remaps funcionam como um encanto para mim:
Então, quando estou no modo visual, seleciono as linhas que quero e pressiono Ctrl+ ce depois Ctrl+v para inserir o texto no arquivo receptor. Você também pode usar "* y, mas às vezes é difícil lembrar disso.
Isso também é útil para copiar texto do Vim para a área de transferência.
Origem: Copie e cole entre as sessões usando um arquivo temporário
fonte
Copiar texto entre dois buffers (== arquivos) abertos na mesma instância do Vim não é problema:
Simplesmente puxe um buffer com y(supondo que você tenha marcado uma área para copiar no modo visual antes) e cole no outro buffer comp . Também funciona com guias diferentes, desde que estejam na mesma instância do Vim.
Como abrir dois arquivos na mesma instância do Vim depende do seu sistema:
vim file1 file2
--remote-silent
opção para garantir que todos os arquivos sejam abertos na mesma instânciaSe você abriu os dois arquivos em duas instâncias diferentes do Vim, precisará ir com a área de transferência do sistema: na primeira instância do Vim, puxe o texto para a área de transferência do sistema usando
"+y
(novamente, marque a área a ser puxada no modo visual antes ), então vá para o segundo Vim e colar a área de transferência aí:"+p
.fonte
Objetivo : salvar uma parte de um arquivo em outro arquivo.
Solução :
Salve o texto selecionado no novo arquivo. Digite :wSpacee o nome do novo arquivo. Na verdade você verá
:'<,'>w new.txt
Então aperte Enter
fonte
Meu cenário era que eu precisava copiar n número de linhas no meio, n desconhecido, do arquivo 1 para o arquivo 2.
fonte
:echo has('clipboard')
deve retornar1
0
(por exemplo, Mac OS X, pelo menos v10.11 (El Capitan), v10.9 (Mavericks) e v10.8 (Mountain Lion) - vem com uma versão do Vim sem suporte para a área de transferência), é necessário instalar um Versão Vim com suporte à área de transferência, digamos viabrew install vim
(não se esqueça de reiniciar o (s) seu (s) terminal (ais) após a instalação)PS:
set mouse+=a
ao seu.vimrc
- ele permitirá que você selecione linhas no Vim usando o mouse, sem selecionar elementos estranhos (como números de linhas, etc.) AVISO: ele bloqueará a capacidade de copiar o texto selecionado pelo mouse para a área de transferência do sistema do Vim .fonte
Exemplo: arquivoA e arquivoB - inicie no arquivoA na linha 25, copie 50 linhas e cole no arquivoB
fonte
A opção abaixo funciona na maioria das vezes e também para colar posteriormente.
As linhas arrancadas serão armazenadas no buffer
'x'
. Pode ser usado em qualquer lugar da edição.Para colar linhas no outro arquivo,
Exemplo: Digite o comando abaixo na edição atual
Operação completa
abrir arquivo 1:
Agora, abra o segundo arquivo da edição atual
- mova o cursor para a linha em que você deve colar
- As linhas do buffer
'*a*'
serão copiadas após a posição atual do cursorfonte
Se você deseja copiar uma parte de um arquivo e colar esse conteúdo no meio de outro arquivo, é possível fazer isso.
Exemplo:
Ou
Exemplo:
Agora as linhas são copiadas para outro arquivo. Se você deseja excluir essas linhas após a cópia, pode fazer
Ou
Agora, vá para outro arquivo. Em seguida, mantenha o cursor na linha em que você deseja colar.
Tipo
Agora, o conteúdo do arquivo temporário é colado aqui. Você pode excluir o arquivo temporário da própria linha de comando, após colar o conteúdo.
Isso ajudaria se você quisesse copiar e colar várias vezes.
fonte
Outra maneira poderia ser abrir os dois arquivos em dois buffers divididos e usar o seguinte "snippet" após a seleção visual das linhas de interesse.
fonte
Entre no modo de comando e execute
Por exemplo, para extrair linhas
20-30
dofilename
arquivo aberto no momentofonte