Como copiar o conteúdo da pasta no editor vi

165

Tentei usar Ctrl+ Vpara colar o conteúdo em um documento do editor vi, mas Ctrl+ Vnão é interpretado como uma pasta.

Rpj
fonte
16
Apenas uma observação, o principal motivo para usar o Vi é porque o Vim não está instalado. Se você possui o Vim instalado, provavelmente vale a pena usá-lo. Não há realmente uma vantagem para o Vi, além de já estar presente em todas as instalações do Unix. A melhor maneira de aprender o Vim, na minha opinião, é abrir o emulador de terminal (não no Vim) e digitar vimtutorEle o levará até a velocidade em que é utilizável em cerca de 45 minutos.
Ben Mordecai
11
+1 @BenMordecai - Eu já estava familiarizado com o vi (antigo), incluindo seu conveniente recurso de subcasca, mas precisava dessa atualização. Ótimo pouco de tutoria. Passou por ela como uma brisa. Obrigado.
Cbhihe #

Respostas:

192

Primeiro, verifique se você está no modo de edição (pressione i). Em seguida, você pode colar com Ctrl+ Shift+ V, se estiver em um emulador de terminal como gnome-terminal(ou selecione "Colar" no menu do botão direito do mouse).

Você também pode digitar o :set pastevim antes de colar para desativar o recuo automático etc. Depois de :set nopastecolar o conteúdo.

Verifique também esta pergunta no stackoverflow.com para obter mais informações.

Se você deseja copiar / colar linhas vim(em vez de colar o conteúdo da área de transferência), verifique o comando yank . Aqui está uma folha de dicas que pode ajudar.

Attila O.
fonte
11
Eu acho que se você tiver o cursor do mouse, não poderá colar usando Ctrl + Shift + V.
Alvin Wong
14
Apenas uma observação, diferencia Imaiúsculas de minúsculas. A minúscula ié a maneira normal de entrar no modo de inserção. Capital Icoloca o cursor no início da linha e entra no modo de inserção.
Ben Mordecai
64

O Vi (e o Vim) funciona de maneira muito diferente em comparação com um editor de texto normal, como o Gedit. Ele também tem uma curva de aprendizado bastante acentuada. Se você quiser aprender alguns comandos básicos, comece com este tutorial interativo .

No entanto, para responder à sua pergunta. O conteúdo da área de transferência do sistema pode ser acessado através do registro positivo. Portanto, para colar algo da área de transferência do sistema, você pode, no modo Normal, pressionar: "+p(Não ao mesmo tempo, mas um após o outro).

Daniel Jonsson
fonte
3
Isso é algo que eu não sabia até agora. Além disso, +1 para vincular outro tutorial impressionante do vim.
Attila O.
19
Falando em curvas de aprendizado para editores, há as "curvas clássicas de aprendizado para alguns editores comuns", blog.thilelli.net/public/store/attached/curves.jpg .
hlovdal
No Terminal GNOME, os atalhos para copiar e colar são Ctrl-Shift-C e Ctrl-Shift-V, respectivamente.
Flimm 23/02
11
Tentei pressionar, por sua vez, <kbd> "</kbd>, <kbd> + </kbd> e <kbd> p </kbd>, também <kbd>" </kbd> e <kbd> p < / kbd> e nada aconteceu. O que eu fiz de errado? Eu vinão usovim
user907860
11
Essa é a resposta certa. Usando por exemplo. Ctrl-Shift-v funcionará apenas com o conteúdo mais simples (quebras de linha e indentações podem ficar realmente erradas se você estiver no terminal e se esqueceu de usar set :paste).
rsenna
29
  1. Se você deseja copiar e colar o conteúdo dentro do mesmo arquivo , use yanke paste.

  2. Se você deseja copiar o conteúdo da pasta entre os terminais , abra o primeiro arquivo, puxando o texto desejado, abra o segundo arquivo no vim (por exemplo :tabnew /path/to/second/file) e pressione ppara colá-lo.

  3. Se você deseja copiar o conteúdo da pasta do vim para um programa externo , é necessário acessar a área de transferência do sistema. Eu suponho que você use o Ubuntu. A versão da GUI do vim sempre tem suporte à área de transferência; no entanto, se você gosta de usar o Vim em um terminal, precisará verificar o suporte à área de transferência do X11.

    No console, digite:

    $ vim --version | grep xterm
    

    Se você encontrar -xterm_clipboard , terá duas opções:

    1) Compile o vim você mesmo, com o sinalizador xterm_clipboard no

    2) Desinstale o vim, instale o gvim (vim-gtk ou vim-gnome). Você pode usar o vim não gui chamando o vim a partir do terminal, da mesma maneira que fazia antes. Desta vez, quando você verificar, deverá encontrar + xterm_clipborad .

    Agora, quando você puxa algum texto no registro + dentro do seu editor vim (por exemplo, "+ yy), ele também é copiado para a área de transferência do sistema, que você pode recuperar do seu programa externo, como o editor do gedit, usando Ctrl+ V.

  4. Se você deseja copiar o conteúdo da pasta de um programa externo para o vim , copie primeiro o texto na área de transferência do sistema via Ctrl+ e C, no modo de inserção do editor do vim , clique no botão do meio do mouse (geralmente a roda) ou pressione Ctrl+ Shift+ Vpara colar.

    Estas são 4 condições básicas de copiar e colar relacionadas ao vim. Eu espero que isso ajude.

47dev47null
fonte
Qual é o objetivo de: tabnew / path / to / second / file? Você pode obter exatamente a mesma coisa puxando / copiando / recortando no primeiro arquivo, abrindo o segundo arquivo com: vi / caminho / para / segundo / arquivo e colando (p / P) nele. Pelo menos no meu caso ... Ou é porque eu tenho o recurso + xterm_clipboard vim ativado? Ou há mais coisas novas do que apenas isso?
Cbhihe
11
No Ubuntu vim-gtktem xterm_clipboardsuporte e no Fedora xvimtem.
Icc97 18/06/19
18

Eu sempre uso Shift+ Insertquando quero colar texto no terminal, funciona em todos os programas do terminal.

(Essa também é a razão pela qual nunca consigo um laptop onde você não pode pressionar Insertsem pressionar uma tecla secundária)

Magnus Jonsson
fonte
2
Vi/ Vim! = terminal;)
0xC0000022L 17/02
11
ok ok, mas ainda funciona :)
Magnus Jonsson
+1 para isso. O que você costuma usar para dizer Ctrl+A, Ctrl+Ctambém?
Arup Rakshit
Se eu usar um terminal dentro de um DE, normalmente apenas seleciono o texto com o mouse e copio com Ctrl + Shift + C.
Magnus Jonsson
Shift + Insert também funciona no gvim. (Estou rodando Ubuntu 13.10, se isso faz alguma diferença.)
eksortso
10

Use o botão central do mouse para inserir o texto que você destacou em outro lugar.

É útil quando você não tem acesso à área de transferência do sistema (por exemplo, em uma sessão SSH remota).

Deve estar no modo de edição / inserção do Vim.

vontade-ob
fonte
6

Depois de inserir o vi, pressione ipara entrar no modo de inserção, clique com o botão direito do mouse no terminal, clique em colar.

GC 13
fonte
Eu pensei que era minúsculo i. O que maiúsculas Ifazem?
Flimm
@ Limlim que já foi explicado em um comentário por Ben Mordecai em outra resposta.
sierrasdetandil
Editei a resposta para minúscula i. Maiúsculas Imove o cursor para o início da linha antes de entrar no modo de inserção, o que não é necessário aqui.
Flimm
6

Instruções detalhadas para copiar / colar linhas de texto no vi usando yankeput

(use o seguinte no modo de comando do vi)

Copiar (YANK)

Para copiar uma linha no vi:

  • No modo de comando, mova o cursor para a linha que precisa ser copiada e digite yyou digiteY

Para copiar 2 linhas no vi:

  • No modo de comando, mova o cursor para a primeira linha que precisa ser copiada e digite 2yyou digite2Y

(da mesma forma, qualquer número de linhas pode ser copiado)

Para copiar todas as linhas do local atual para o final do arquivo:

  • No modo de comando, mova o cursor para a primeira linha que precisa ser copiada e digite yG

Para copiar todo o texto do local atual até o final da palavra atual:

  • No modo de comando, mova o cursor para o local de onde o texto precisa ser copiado e digite yw

Para copiar todo o texto do local atual para o final da linha:

  • No modo de comando, mova o cursor para o local de onde o texto precisa ser copiado e digite y$

Colar (PUT)

Para colar texto na área de transferência - após a localização do cursor:

  • No modo de comando, digite p

Para colar texto na área de transferência - antes da localização do cursor:

  • No modo de comando, digite P
slayernoah
fonte
1

Eu tive um problema, porque minha instalação do Vim não suportava a área de transferência :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Instalei o vim-gnome (que suporta a área de transferência) e verifiquei novamente:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Agora eu posso copiar e colar usando "+ ye" + p, respectivamente.

Ashutosh Tripathy
fonte
Isso resolveu o meu problema!
astrojuanlu
1

Com o Vim 8+ no Linux ou Mac, agora você pode simplesmente usar a pasta nativa do SO ( ctrl+shift+Vno Linux, cmd+Vno Mac). Não pressione ipara inserir o modo.

Ele colará o conteúdo da área de transferência do sistema operacional, preservando os espaços e as guias sem adicionar a inserção automática. É equivalente ao velho :set paste, i, ctrl+shift+V, esc, :set nopastemétodo.

Você nem precisa mais dos recursos +clipboardou do +xterm_clipboardvim instalados. Esse recurso é chamado de "pasta entre colchetes". Para obter mais detalhes, consulte https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763

wisbucky
fonte
Essa é a resposta que estou procurando. Como o Vim não é o padrão nas distribuições gnu / linux, ele precisa ser instalado mesmo no ubuntu. Além disso, os botões para cima e para baixo do Vi não funcionam no ubuntu e não têm destaque.
itsnotmyrealname
0

Se você é root : Ctrl+ Shift+V

Se você não é root : Center, clique com o mouse.

Vista elíptica
fonte
0

Eu só queria observar que, usando o Vim via Git Bash no Windows, você pode simplesmente usar pou clicar com o botão central do mouse sem estar no modo de inserção. Usando o Vim através do PuTTY , você pode clicar com o botão direito. E o destaque é a cópia.

Eu notei isso porque cheguei aqui sem ver que este é o SE para Ubuntu.

Outros comandos úteis:

  • yy(número de linhas) - arranco (cópia)
  • dd(número de linhas) - excluir
  • p - colar linha abaixo da linha atual
  • Shift+ p- colar linha acima da linha atual
  • u - desfazer
  • r - refazer
  • i - modo de inserção
  • v - modo visual
Tyler Christian
fonte
Isso não funcionou para mim no Windows Git Bash. Qual console você está usando, mintty ou windows cmd?
wisbucky 17/07
Eu acredito que era hortelã.
Tyler Christian
0

Você pode usar Ctrl+ Shift+ Vpara colar na versão terminal vim, mas para a versão GUI do vim Neovim-Qt, colar o texto da área de transferência do sistema com Ctrl+ Shift+ Vsimplesmente não funcionará. Você precisa acessar a área de transferência "+ou "*o editor vim.

A adição de uma nova combinação de teclas .vimrcirá simplesmente copiar / colar os comandos:

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
Yossarian42
fonte