Pergunta

Como duplicar uma linha inteira no Vim de uma maneira semelhante à Ctrl+D no IntelliJ IDEA/ou Resharper Ctrl+Alt+/ no Eclipse?

Foi útil?

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 intervalo 1,.).

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ário class xxx logo após o cursor.

Referência: :help range, :help :t, :help :g, :help :m e :help :v

YP ou Yp ou yyp.

copy and paste in vim

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).

vi (Vim) para Usuários do Windows

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top