Duplicar uma linha inteira no Vim
-
09-06-2019 - |
Pergunta
Como duplicar uma linha inteira no Vim de uma maneira semelhante à Ctrl+D no IntelliJ IDEA/ou Resharper Ctrl+Alt+↑/↓ no Eclipse?
Solução
yy ou Y para copiar a linha
ou
dd para excluir (corte) a linha
em seguida,
p para colar o copiados ou excluídos texto depois de a linha atual
ou
P para colar o copiados ou excluídos texto antes de a linha atual
Outras dicas
Modo Normal:veja outras respostas.
O Ex forma:
:t.
vai duplicar a linha,:t 7
irá copiá-lo após a linha 7,:,+t0
irá copiar actual e seguinte linha no início do arquivo (,+
é um sinônimo para o intervalo.,.+1
),:1,t$
irá copiar as linhas do início até a posição do cursor até o fim (1,
é um sinônimo para o intervalo1,.
).
Se você precisa mover em vez de copiar, usar :m
em vez de :t
.
Isso pode ser realmente muito poderosos, se você combiná-lo com :g
ou :v
:
:v/foo/m$
irá mover todas as linhas que não correspondem ao padrão "foo" para o final do arquivo.:+,$g/^\s*class\s\+\i\+/t.
irá copiar todas as linhas subsequentes do formulárioclass xxx
logo após o cursor.
Referência: :help range
, :help :t
, :help :g
, :help :m
e :help :v
YP
ou Yp
ou yyp
.
Não obter qualquer mais simples do que isso!A partir do modo normal:
yy
em seguida, mover para a linha que você deseja colar no e
p
yy
vai copia a linha atual, sem a apagar
dd
irá excluir a linha atual
p
vai put
uma linha agarrado por um dos métodos anteriores
Se você quer de outro modo :-)
"ayy
isso irá armazenar a linha no buffer a
"ap
isto irá colocar o conteúdo do buffer a
na posição do cursor.
Há muitas variações desta.
"a5yy
isso irá armazenar as 5 linhas no buffer a
ver http://www.vim.org/htmldoc/help.html para mais diversão
Fazer isso:
Primeiro, yy para copiar a linha atual e, em seguida, p para colar.
yyp - lembre-lo com "hurra!"
Várias linhas com um número de entre:
y7yp
yyp - depois de colar
yyP - antes de colar
Você também pode tentar <C-x><C-l> o que vai repetir a última linha do modo de inserção e traz para você uma janela de conclusão com todas as linhas.Ele funciona quase como <C-p>
Outra opção seria ir com:
nmap <C-d> mzyyp`z
dá-lhe a vantagem de preservar a posição do cursor.
Para quem não sabe, vi, algumas respostas de acima podem enganá-lo com frases como "colar ...antes/depois linha atual".
É, na verdade, "colar ...antes/depois cursor".
yy ou Y para copiar a linha
ou
dd para excluir a linha
em seguida,
p para colar o copiados ou excluídos texto depois de o cursor
ou
P para colar o copiados ou excluídos texto antes de o cursor
Para mais atalhos do teclado, você pode visitar este site: vi Chave Completa Lista de Ligação
Eu gosto de:Mudança+v (para selecionar toda a linha imediatamente e permite que você selecione outras linhas, se você quiser), y, p
1 pegadinha:quando você usar o "p" para colocar a linha, coloca depois de a linha em que o cursor está no, então, se você deseja adicionar a linha depois da linha que você está puxando, não mover o cursor para baixo uma linha antes de colocar a nova linha.
O padrão é yyp, mas eu tenho vindo a utilizar este revinculação para um ano ou assim e amá-lo:
" set Y to duplicate lines, works in visual mode as well.
nnoremap Y yyp
vnoremap Y y`>pgv
Eu sei, estou atrasado para a festa, mas que seja;Eu tenho isso no meu .vimrc:
nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>
o :copy
comando copia a linha seleccionada ou o intervalo (sempre linhas inteiras) para abaixo da linha de número dado como argumento.
Em modo normal o que isto faz é copy .
copie essa linha abaixo desta linha.
E no modo visual, ele se transforma em '<,'> copy '>
copiar a partir do início da seleção para a final da seleção para a linha abaixo o fim da seleção.
Para quem está começando a aprender vi, aqui é uma boa introdução a vi pela listagem de lado a lado vi comandos típicos do Windows GUI do Editor de movimento do cursor e teclas de atalho.Ele lista todos os comandos básicos, incluindo aa (cópia de linha) e p (depois de colar) ou P(antes de colar).
Se você gostaria de duplicar uma linha e cole-o imediatamente abaixo do atual, como, assim como no Sublime Ctrl+Mudança+D, e , em seguida, você pode adicionar isto ao seu .vimrc
arquivo.
imap <S-C-d> <Esc>Yp
Eu gosto de usar esse mapeamento:
:nnoremap yp Yp
porque a torna consistente para usar juntamente com os nativos YP
de comando.