Como duplico uma linha inteira no Vim de maneira semelhante a Ctrl+ Dno IntelliJ IDEA / Resharper ou Ctrl+ Alt+ ↑/ ↓no Eclipse ?
Yes Plocação. :)
Como duplico uma linha inteira no Vim de maneira semelhante a Ctrl+ Dno IntelliJ IDEA / Resharper ou Ctrl+ Alt+ ↑/ ↓no Eclipse ?
Yes Plocação. :)
Respostas:
yyou Ypara copiar a linha (mnemônico: y ANK )
ou
ddpara d élete a linha (VIM cópias que você excluídos em uma prancheta-like "registrar", como um corte de operação)
então
ppara p aste o copiado ou excluído texto após a linha atual
ou
Pa p aste o texto copiado ou excluído antes da linha atual
Ypara y$. (Consistente com De C; (mas não compatível com Vi (ninguém se importa.))) Isso é proposto em :help Y.
yjou yk, especialmente porque você não duplica um personagem. Além disso, yké uma versão para trás que 2yynão pode ser executada, e você pode colocar o número de linhas para retroceder y9jou y2k, etc. A única diferença é que sua contagem deve ser n-1de um total de nlinhas, mas sua cabeça pode aprender que de qualquer forma.
Modo normal: veja outras respostas.
O caminho Ex :
:t. duplicará a linha,:t 7 irá copiá-lo após a linha 7,:,+t0copiará a linha atual e a próxima no início do arquivo ( ,+é sinônimo do intervalo .,.+1),:1,t$copiará as linhas do início até a posição do cursor até o fim ( 1,é sinônimo do intervalo 1,.).Se você precisar mover em vez de copiar, use em :mvez de :t.
Isso pode ser realmente poderoso se você combiná-lo com :gou :v:
:v/foo/m$ moverá todas as linhas que não correspondem ao padrão "foo" até o final do arquivo.:+,$g/^\s*class\s\+\i\+/t.copiará todas as linhas subseqüentes do formulário class xxxlogo após o cursor.Referência: :help range, :help :t, :help :g, :help :me:help :v
:no modo visual, ele é transformado para '<,'>pré-selecionar o intervalo de linhas que a seleção visual abrange. Portanto, no modo visual, :t0copia as linhas no início.
:t.é a resposta exata para a pergunta.
YPou Ypou yyp.
Ynormalmente é remapeado para y$(puxar (copiar) até o final da linha (da posição atual do cursor, não do início da linha)). Com esta linha em .vimrc::nnoremap Y y$
yyP

Não fica mais simples do que isso! Do modo normal:
yy
depois vá para a linha na qual deseja colar e
p
yy
puxará a linha atual sem excluí-la
dd
excluirá a linha atual
p
será putuma linha agarrada por um dos métodos anteriores
Se você quiser outra maneira:
"ayy: Isso armazenará a linha no buffer a.
"ap: Isso colocará o conteúdo do buffer ano cursor.
Há muitas variações nisso.
"a5yy: Isso armazenará as 5 linhas no buffer a.
Consulte " Arquivos de ajuda do Vim para mais diversão.
yyp - lembre-se com "yippee!"
Várias linhas com um número entre:
y7yp
:.,.+7 copy .+7: P
yyp - colar depois
yyP - cole antes
Gosto de: Shift+ v(para selecionar a linha inteira imediatamente e permitir que você selecione outras linhas, se desejar), y, p
Você também pode tentar <Cx> <Cl>, que repetirá a última linha do modo de inserção e exibirá uma janela de conclusão com todas as linhas. Funciona quase como <Cp>
Para alguém que não conhece o vi, algumas respostas acima podem enganá-lo com frases como "colar ... depois / antes da linha atual ".
Na verdade, é "colar ... depois / antes do cursor ".
yyou Ypara copiar a linha
ou
ddexcluir a linha
então
pcolar o texto copiado ou excluído após o cursor
ou
Pcolar o texto copiado ou excluído antes do cursor
Para obter mais ligações de teclas, você pode visitar este site: vi Lista Completa de Ligações de Chaves
O padrão é yyp, mas eu uso essa religação há mais ou menos um ano e adoro:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
Eu sei que estou atrasado para a festa, mas tanto faz; Eu tenho isso no meu .vimrc:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
a :copy comando apenas copia a linha ou o intervalo selecionado (sempre linhas inteiras) abaixo do número da linha fornecido como argumento.
No modo normal, o que isso faz é copy . copiar esta linha para logo abaixo desta linha .
E no modo visual, ele se transforma em '<,'> copy '> cópia do início da seleção para o final da seleção até a linha abaixo do final da seleção .
Para quem está começando a aprender o vi, aqui está uma boa introdução ao vi, listando lado a lado os comandos do vi para o movimento típico do cursor do Windows GUI Editor e as teclas de atalho. Ele lista todos os comandos básicos, incluindo yy(linha de cópia) e p(colar depois) ou P(colar antes).
Se você deseja duplicar uma linha e colá-la imediatamente abaixo do atual, como no Sublime Ctrl+ Shift+ D, você pode adicioná-lo ao seu .vimrcarquivo.
nmap <S-C-d> <Esc>Yp
Ou, para o modo Inserir:
imap <S-C-d> <Esc>Ypa
inovamente ao final para reinserir, ele quebra undo, portanto, a solução para duplicar linhas no modo de inserção não é tão trivial quanto parece.
imap <S-C-d> <Esc>Ypi modo de inserção e nmap <S-C-d> <Esc>Ypno modo normal