É possível colar no modo de inserção no Vim?
É possível colar no modo de inserção no Vim?
Respostas:
Enquanto estiver no modo de inserção, pressione CTRL-R {register}
Exemplos:
CTRL-R * irá inserir no conteúdo da área de transferência CTRL-R " (o registro sem nome) insere a última exclusão ou puxão. Para encontrar isso no tipo de ajuda do vim :h i_ctrl-r
CTRL-R *funciona apenas no GVIM ou em versões compiladas para interagir com x. Digite vim --versione procure +xterm_clipboard. Se você não tiver isso, precisará de uma versão diferente do vim. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )
+clipboard, mas, se tiver, +xterm_clipboarddeve fazê-lo de qualquer maneira. Em alguns sistemas operacionais xterm_clipboardnão é aplicável.
*registro é colável com o clique do meio do mouse, enquanto +é a tradicional copiar / colar. standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
Se você não quer Vim para mangle formatação no incoming texto colado, você também pode querer considerar o uso: :set paste. Isso impedirá que o Vim remarque seu código. Quando terminar de colar, :set nopasteretornará ao comportamento normal.
Também é possível alternar o modo com uma única tecla, adicionando algo como set pastetoggle=<F2>ao seu .vimrc. Mais detalhes sobre a alternância da indentação automática estão aqui .
:set nopastedesativará o modo colar
:set paste!Provavelmente, a pasta definida está muito próxima do seu histórico de comandos, então você pode simplesmente pressionar ':', depois clicar com a seta para cima e adicionar um '!'.
:set paste! Thanks :)
!no final do comando vimativa e desativa o comando. Dessa forma, você não precisa digitar; :set nopastepode rolar o histórico e executar o mesmo comando ( :set paste!) novamente.
Não, não diretamente. O que você pode fazer é sair rapidamente do modo de inserção para uma única operação no modo normal Ctrl-Oe colar a partir daí, que terminará colocando você de volta no modo de inserção.
Combinação de teclas: Ctrl-O p
EDIT: Interessante. Parece que existe uma maneira como várias outras pessoas listaram.
esc + p?
esc + p + ie definitivamente mais fácil de escrever do queCTRL-R + "
CTRL-R ". Por exemplo, embora as configurações do vimrc possam mudar isso, colar algo em uma nova linha usando CTRL-O pfaz com que o recuo diminua.
Enquanto estiver no modo de inserção, você pode usar Ctrl-R {register}, onde o registro pode estar:
+ para a área de transferência,* para a área de transferência X (último texto selecionado em X), " para o registro sem nome (última exclusão ou puxão no Vim),:h registers).Ctrl-R {register} insere o texto como se tivesse sido digitado.
Ctrl-R Ctrl-O {register} insere o texto com o recuo original.
Ctrl-R Ctrl-P {register} insere o texto e o recua automaticamente.
Ctrl-Opode ser usado para executar qualquer comando do modo normal antes de retornar ao modo de inserção;
Ctrl-O "+ptambém pode ser usado, por exemplo.
Para obter mais informações, consulte a documentação com :h i_ctrl-r
Você pode usar isso para colar da área de transferência com Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
E isso para puxar a seleção visual para a área de transferência com Ctrlc:
vnoremap <C-c> "+y
Se você também deseja usar a área de transferência por padrão para puxar / colar clássico do vim ( y/ p) no modo normal, aqui está uma opção de configuração que faz isso:
set clipboard=unnamedplus
Com essas configurações, você pode, por exemplo, puxar primeiro no modo normal e depois colar Ctrlvno modo de inserção. Além disso, você pode colar texto de diferentes instâncias do vim e aplicativos diferentes.
Outra opção é:
set clipboard=unnamed
Depois, você poderá selecionar algo arrastando o mouse no seu ambiente X e colá-lo no vim posteriormente. Mas (por algum motivo), você não poderá puxar algo ( y) no Vim eshiftinsert em outro lugar posteriormente, o que provavelmente é bastante limitador.
Documentos do Vim sobre isso: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Para colar a partir de registros personalizados, você pode seguir as outras respostas :). Esta resposta é principalmente sobre a integração do Vim com a área de transferência do sistema.
Observe que, para set clipboard=unnamedpluse set clipboard=unnamedpara o trabalho, você precisa usar gvim ou vimx ( vim-X11): são compilados +xterm_clipboard. Opcionalmente, você pode colocar isso no seu .bashrcalias vimcom vimx:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Você pode descobrir se o seu vim possui ou não +xterm_clipboardas informações fornecidas por vim --version.
:set pastee o bizantino <leader><leader> * ysão remotamente desejáveis? Para não parecer muito comprometido, estou genuinamente curioso sobre o que a filosofia vim reflete ou se é apenas um infortúnio histórico.
inoremap <S-Insert> <F12><C-r>+<F12>(eu uso F12 como pastetoggle). Obrigado.
Se você configurar o Vim para usar a área de transferência do sistema ( :set clipboard=unnamed), qualquer texto que você copiar no Vim poderá ser colado usando Shift+ Insert. Shift+ Inserté simplesmente uma combinação de teclas de colar em todo o sistema operacional ( Ctrl+ Inserté a 'cópia' correspondente).
pcolar o texto na área de transferência?
Shift + Insertpara colar o texto, precisamos estar no modo de inserção.
Você também pode usar o botão do meio do mouse para colar no modo de inserção (somente Linux).
Você pode entrar no -- INSERT (past) --modo via:
ou
:set pastee entrando no modo de inserção ( :set nopastepara desativar)Uma vez no -- INSERT (past) --modo, basta usar a função de colar do sistema (por exemplo, CtrlShiftvno Linux, Cmdvno Mac OS).
Essa estratégia é muito útil ao usar o vim over ssh.
Sim. No Windows Ctrl+ Ve no Linux, pressione os dois botões do mouse quase simultaneamente.
No Windows, acho que essa linha no meu _vimrc provavelmente faz isso:
source $VIMRUNTIME/mswin.vim
No Linux, não me lembro como fiz. Parece que eu provavelmente excluí alguma linha do arquivo .vimrc padrão.
Um mapa personalizado parece apropriado nesse caso. Isto é o que eu uso para colar itens arrancados no modo de inserção:
inoremap <Leader>p <ESC>pa
Minha Leaderchave aqui é \; isso significa que pressionar \pno modo de inserção colaria os itens / linhas arrancados anteriormente.
Basta adicionar o mapa:
" ~/.vimrc
inoremap <c-p> <c-r>*
reinicie o vim e quando pressionar Crtl+pno modo de inserção, o texto copiado será colado