Costumo colar algumas coisas em uma nova linha no vim. O que eu costumo fazer é:
o<Esc>p
O que insere uma nova linha e me coloca no modo de inserção, depois sai do modo de inserção e, finalmente, cola.
Três pressionamentos de tecla. Não é muito eficiente. Alguma ideia melhor?
Respostas:
Logo após
:help p
ele diz:Infelizmente, não é mais curto que a sua solução atual, a menos que você a combine com algum mapa do teclado, conforme sugerido em uma resposta diferente. Por exemplo, você pode mapeá-lo para qualquer chave (par
p
):fonte
:pu[t]
colocará o texto em uma nova linha após a linha atual,:pu[t]!
colocará o texto em uma nova linha antes da linha atual. Vou editar minha resposta de acordo. (Hooray for:help p
.):nmap p :pu<CR>
Coloque-o em seu .vimrc arquivo e temos que ir :)Opções:
1) Use
yy
para puxar a linha inteira (incluindo o caractere de fim de linha).p
colará a linha em uma nova linha após a atual eP
( Shift- P) colará acima da linha atual.2) Faça um mapeamento: então são apenas uma ou duas chaves:
3) A versão da função do mapeamento (realmente desnecessário, mas apenas por completo):
fonte
Você pode colar um buffer no modo de inserção usando
<C-R>
seguido pelo nome do buffer a colar. O buffer padrão é"
, então você fariaDescobri que uso com
<C-R>"
muita frequência e vinculei isso ao<C-F>
meu vimrc:fonte
Isso ainda usa três pressionamentos de tecla, mas acho mais fácil que o Esc:
o<Alt-p>
Como você está no modo de inserção após pressionar o, o modificador Alt permitirá que você use um comando como se não estivesse.
fonte
Usando este plugin: https://github.com/tpope/vim-unimpaired
]p
pastas na linha abaixo[p
pastas na linha acimavantagens:
fonte
tpope/vim-unimpaired
para que isso funcione 😉.Pessoalmente, nmappedi Enter (CR) assim:
... com base neste artigo da Vim Wikia.
Dessa forma, eu posso criar novas linhas diretamente do modo normal, e combinando isso com o desejo de colar em uma nova linha abaixo, eu faria:
Você também pode pular k no nmap acima, dependendo da funcionalidade que preferir do Enter , para que seja
<CR>p
.Também mapeei o jj para Esc , o que também ajudaria neste caso. Esc está muito longe da linha inicial para ver se é significativo no vim.
Não é mais curto que as outras soluções, mas acho que parece menos desajeitado do que algumas delas, e também tem outros usos.
fonte
Se você estiver copiando uma linha inteira e colando uma linha inteira, use
Y
para puxar a linha ou linhas, incluindo quebra de linha, em primeiro lugar ep
colar. Você também pode usarV
, que é o modo de linha visual , em contraste com ov
modo simples para visual.fonte
Eu tenho mapeamento
inoremap jj <ESC>
. Portanto, é fácil inserir uma nova linha comojj
eOjj
e depoisp
.então
ojjp
cole uma nova linha nova. ele tem mais um golpe,o<esc>p
masojjp
é fácil para mim.fonte
Encontrei uma solução elegante para isso. Se você estiver colocando o registro ianque na área de transferência do seu sistema operacional (o que é ótimo de qualquer maneira), com
do que você pode fazer
o<Ctl-v>
.Além de ter menos traços, isso melhora em ambos
o<Esc>p
e:pu
porque preserva o recuo: as outras opções iniciam o caractere zero na nova linha.Advertência é que isso pode ou não ser dependente do SO. Tudo o que sei é que ele funciona na versão recente do OS X, mas a área de transferência é apenas uma das muitas maneiras de puxar a área de transferência do sistema operacional.
fonte
Se você também deseja terminar no modo de inserção, é possível colar enquanto estiver no modo de inserção usando
CTRL-R "
. https://stackoverflow.com/a/2861909/461834Ainda são três pressionamentos de tecla, mas não há escapatória, e você salva um pressionamento de tecla se quiser finalizar a inserção mesmo assim.
fonte
Eu uso o seguinte mapeamento na minha configuração do Neovim:
Uma pequena explicação:
m`
: define uma marca na posição atual do cursor.o<Esc>p
: crie uma nova linha abaixo e cole o texto nesta linhaO<Esc>P
: crie uma nova linha acima e cole o texto nessa linha``
: coloca o cursor na posição originalConsulte
:h mark
para obter mais informações sobre marcas no Vim.fonte
Se você quiser permanecer no modo de inserção, pode fazer
o ctrl+o p
o
- insira o modo e vá para a nova linhactrl+o
- execute um único comando como no modo normalp
- colarSão três pressionamentos de tecla, mas você permanece no modo de inserção e também
o ctrl+o
é bastante rápido, então eu o trato pessoalmente como pressionamentos de tecla 2,5.fonte
Essa solução parece aplicar-se apenas quando o bloco de texto copiado inicia em uma nova linha (em vez de pegar um trecho de texto em algum lugar dentro de uma linha), mas você sempre pode iniciar sua cópia no último caractere que deseja pegar e navegar. até o último caractere no final da linha antes do início do bloco de cópia desejado. Quando quiser colá-lo, coloque o cursor no final da linha em que deseja colar o texto e pressione p. Se eu não estraguei a explicação, isso deve fornecer o efeito que você está procurando.
fonte