Estou usando o sistema Linux. Dois vims são abertos em dois terminais. Agora, eu gostaria de copiar o texto de A para B. Uma maneira de fazer isso é selecionar texto em A, usar o mouse para copiar e depois mudar para B, no modo de inserção, o comando <c-r>+
colará o texto.
Existe alguma maneira de executá-lo sem usar o mouse? como "+yy
em A, quando mudar para B o<c-r>+
,? Eu explorei algumas combinações em vão. E procurei por "copiar nos terminais", mas não encontrei nada.
O usuário @statox sugere uma solução usando o modo visual, ou seja, v$"+y
em A, quando alternar para B o<c-r>+
,.
Existe alguma maneira simples de copiar o texto em A sem entrar no modo v? É certo que entrar no modo v não envolve muitas batidas de tecla, apenas pergunto se há uma maneira melhor. Por exemplo. se o cursor estiver no meio de uma linha, yy
copia a linha inteira (para registrar "
), enquanto 0v$y
faz o mesmo com pressionamento de tecla extra.
Ou, minha pergunta pode ser reduzida para se houver alguma maneira com menos pressionamentos de tecla do que 0v$"+y
para copiar , para que eu possa usar <alt-tab>o<c-r>+
para colar.
fonte
"+y
e, na outra instância do vim, coloque o registro da área de transferência"+p
. Ou duplicar isso ?y
com um movimento (:help motion.txt
) ou um objeto (:help object-select
). Se você arrancar e colar entre instâncias Vim muitas vezes, você pode achar que ajusteclipboard
para incluirunnamed
ouunnamedplus
útil. Veja:help 'clipboard'
. Em seguida, copiar entre instâncias deve funcionar.0v$
é o mesmo queV
. E é fácil fazer um mapeamento para"+y
::nnoremap <Leader>y "+y
. Então isso reduz paraV\y
.V"+y
: 4 pressionamentos de tecla.Respostas:
Você pode verificar se o Vim foi criado com o suporte da área de transferência com:
Se a saída for
1
, o seguinte deve ser suficiente para atingir seu objetivo:Você pode facilitar ainda mais a sincronização do registro da área de transferência e do registro padrão com esta configuração em
vimrc
:Se a saída de
:echo has('clipboard')
for0
, considere instalar um Vim apropriado comovim-gtk
ouvim-gnome
(o nome do pacote pode ser diferente de distribuição para distribuição).fonte
Eu acho que a solução que você já mencionou na sua pergunta é a correta. Se você deseja reduzir o número de pressionamentos de teclas, basta criar um mapa, por exemplo
Veja a segunda entrada aqui .
fonte
Para estender a resposta do @ romainl, (com suporte à área de transferência), você pode usar registros compartilhados com a área de transferência do sistema.
Ao executar esses comandos, você y anking / copiar / armazenar conteúdos seleccionados nos registos, e p asting-los para o destino Vim-terminal. Estes dois registros especiais
+
e*
são compartilhados com a ampla área de transferência do sistema (e, portanto, muitos outros programas como o navegador web, gedit etc). O registro+
está associado ao buffer de copiar / colar e*
ao buffer de seleção (aquele que insere uma cópia da seleção com um clique do meio em um campo de texto no Ubuntu, por exemplo) e pode ser colado usandoctrl + v
(ctrl + shift + v
no terminal gnome).fonte
1) No Fedora, uso a seguinte configuração:
O vim-X11 vem com suporte à área de transferência - talvez em outras distros seja semelhante.
2) Defina um alias no meu .bashrc
3) Em .vimrc:
Agora, o puxão usual no Vim entra na área de transferência do sistema e todo Ctrl-C fora do vim pode ser colado no vim.
fonte
Se você estiver usando um Mac (OSX), poderá instalar o bpcopy (usando o brew install pbcopy - consulte http://brew.sh/ para obter mais detalhes). Em seguida, execute o seguinte (linha de comando de forma direta) sem tocar no mouse:
EXEMPLO:
1) No TERMINAL # 001 :
2) Você pode alternar para o terminal # 002 (sem usar o mouse) usando as teclas de atalho embutidos em aplicação de terminal da OSX: command+i
3) No TERMINAL # 002 : Abra o novo arquivo no vim
4) Coloque o vim no modo de inserção comi
5) Insira o texto da área de transferência com command+ V(para colar da área de transferência em um Mac)
6) Aproveite o resto do seu dia!
fonte