Visual Studio: atalho Tecla: linha duplicada


423

Existe um atalho para o comando Duplicate Line no Visual Studio 2008?

Alguns exemplos semelhantes:


6
Apenas para informação, um dos muitos benefícios oferecidos pelo ReSharper é a capacidade de fazer isso.
AakashM

2
visualstudiogallery.msdn.microsoft.com/… Faça o download deste e alt + D duplicará sua seleção ou, se nada estiver destacado, duplicará toda a linha. Infelizmente, as macros do Visual Basic não parecem funcionar em 2013, apenas as macros js.
shenk 17/05

1
OMG, qual é o problema de atribuir uma combinação a uma pessoa como duplicar linha ??? Eu costumava Eclipse. E Ctrl + D é para remover a linha. Por que é tão complicado no VS ???
Andrii Muzychuk

2
@mghhgm abaixo é a resposta que você está procurando (shift + alt + para baixo ou shift + alt + up).
Victor Barrantes

1
O exemplo do vim não está duplicando, é ctrl + c; ctrl + v. "Yank" corta e cola. Não é exatamente o mesmo que os outros exemplos.
ANeves

Respostas:


406

No Visual Studio 2019

Ctrl + D

No Visual Studio 2017 (v15.6 e posterior)

Ctrl + D

No Visual Studio 2017 (versão anterior à 15.6)

(editar) Esse recurso agora está embutido no VS2017: Ctrl+ E, Vduplica uma linha se nada estiver selecionado ou duplica a seleção. Você pode atribuí-lo a uma combinação de teclas diferente ou encontrá-lo no menu:

Linha duplicada no VS2017

Veja esta referência para mais informações.

Antes do VS2017, método interno usando a área de transferência

Como o @cand mencionou, você pode simplesmente fazer Ctrl+ C; Ctrl+ V.

Ctrl+ Ccopiará a linha se nada estiver selecionado.

Solução de macro (antes do VS2017)

Se você deseja implementar uma solução mais completa, talvez para criar um atalho de teclado mais simples ou não deseja efetuar a área de transferência, consulte este guia:

Comando de linha duplicada para o Visual Studio

Visual básico:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLastLineModule
    Sub DuplicateLine()
        Dim line As String
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.EndOfLine(True)
        line = DTE.ActiveDocument.Selection.Text
        DTE.ActiveDocument.Selection.EndOfLine()
        DTE.ActiveDocument.Selection.NewLine()
        DTE.ActiveDocument.Selection.StartOfLine(0)
        DTE.ActiveDocument.Selection.Text = line
    End Sub
End Module

Para criar a macro, basta acessar o macro explorer ("Ferramentas-> Macros-> Macro Explorer" ou Alt+ F8) e copiar e colar o código em um novo módulo. Agora, basta atribuir um atalho de teclado a ele:

  1. vá para Ferramentas-> Opções ...
  2. em Ambiente, clique em Teclado
  3. na caixa de texto "Mostrar comandos que contêm", digite "duplicado" (de acordo com o nome que você deu ao módulo).
  4. agora você deve ver a macro na lista abaixo
  5. escolha "Editor de texto" na lista "Usar novo atalho em"
  6. defina o foco na caixa de texto "Pressione as teclas de atalho" e pressione a combinação no teclado que você deseja usar ( Ctrl+ Shift+ Dno meu caso)
  7. aperte o botão "Atribuir"
  8. agora você deve ver o atalho na caixa de texto "Atalhos para o comando selecionado"
  9. aperte o botão OK

E é isso. Aproveitar!


3
Eu apenas tentei isso, e é interessante que ele repete alguns caracteres extras quando há um "bloco de código do lado do servidor", com tags curtas, como este: <div>Profile.UserName: <%=Profile.UserName %></div>- Depois de duplicar essa linha usando esta macro, torna-se o seguinte: <div>Profile.UserName: <%=Profile.UserName %></div> %></div>. Como você pode ver, a última parte é "repetida". Quando não há blocos de código no servidor, ele funciona bem. Você conhece uma solução alternativa para isso? By the way, outra coisa interessante que eu experimentei é que esta macro é relativamente "lento", que eu não esperava ... :)
Sk8erPeter

6
Após fevereiro de 2014, as macros são desativadas por motivos de segurança. Role para baixo e veja a resposta do MasterHD para a solução alternativa para que o método Wael continue funcionando mesmo após a atualização de segurança.
MasterHD

4
Acho que Ctrl C + Ctrl V é limitador nos casos em que eu já copiei algo na área de transferência e gostaria de duplicar uma linha antes de colar.
sawe

1
Por que diabos é tão difícil implementar uma ação duplicada ou vinculação de teclas que a maioria dos outros editores faz de maneira muito eficiente e intuitiva. : /
kisanme 12/08

1
porque é necessário. Copiei o smth em outra guia, chego a uma linha específica nessa guia, duplico a linha e, em seguida, uso <code> CTRL + V </code> para colar algum código. Caso contrário, tenho que ir e copiar novamente outra parte do código. #
0100 Augustas

136

Há uma extensão gratuita que você pode baixar aqui, que permite duplicar linhas sem substituir o conteúdo da área de transferência.

Por padrão, está vinculado a Alt+ D, mas você pode alterá-lo para o que quiser, indo em Ferramentas-> Opções-> Ambiente-> Teclado. Digite "Duplicar" na caixa de pesquisa e procure por "Edit.DuplicateSelection" e edite o atalho para o que quiser. Eu prefiro Ctrl+ Dser consistente com outros editores.


23
Esta é a resposta real que você está procurando, todo o resto postado aqui é inteligente, mas não o que foi solicitado.
Remco Boom

8
Edit.DuplicateSelectionnão parece estar presente no VSE 2013. Ou qualquer outra coisa com o termo duplicado de fato.
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ


2
Matthew, você deve clicar no link HERE e instalar a extensão. Então você precisa fechar o visual studio e reabri-lo. Então você tem que ir para Ferramentas ==> Opções ==> Ambiente ==> Teclado e ENTÃO você precisa digitar Duplicar e você verá. Então você pode pressionar F4 para que ele funcione como QEDIT ou o que você quiser e a vida será boa.
ggb667

Mesmo que seja um pouco doloroso ter que instalar outra ferramenta, esta faz o trabalho e faz bem. Obrigado !
Sbu

94

É simples Ctrl+ C; Ctrl+ V, verifique este link . Contanto que você não selecione nenhum texto, isso duplicará a linha em que o cursor estará pressionado quando você pressionar Ctrl+ C.


159
Existem inúmeras ocasiões em que você não deseja percorrer a área de transferência, por exemplo, se deseja duplicar uma linha e substituir algum conteúdo nela por algo que você possui na área de transferência.
Effata

7
Claro, mas a pergunta pedia um atalho, não uma solução geral para a edição de texto, então acho que, para propósitos simples, basta (pelo menos no meu caso).
May10

4
obrigado, mas eu estava esperando algo como Ctrl + j no Edit Plus ou Crtl + D no Notepad ++ ... existe algum no VS2008 ou no VS2010
Posto

2
Eu só encontrei este. No entanto, não é tão ruim - é claro que seria mais fácil usar ctrl + D, mas se você deseja duplicar 1 linha em 100 cópias, pode fazê-lo usando ctrl + c (sem precisar selecionar nada, basta colocar o prompt de comando sobre a linha desejada ) + 100 vezes ctrl + v. É apenas um conjunto de pressionamentos de tecla mais do que a solução ctrl + d. Pode ser mais problemático se você desejar fazer uma duplicação mais complexa.
cand

@ Mason240 Essa foi minha reação inicial também à parte citada na resposta aceita, no entanto, as informações adicionais 'Contanto que você não selecione nenhum texto, isso duplicará a linha que o cursor acabou ...' torna isso ideal solução no meu caso.
RyanfaeScotland

74

Ctrl+ C+ Vfunciona para mim no VS2012 sem extensão.


Funciona no VS2008 também!
Teodron 26/09/16

1
Funciona no VS2017.
Kyle Delaney

8
Precisa de uma solução sem prancheta sobrescrevendo
Pierre de LESPINAY

Apenas para complementar a resposta, você só precisa pressionar a combinação completa para a primeira duplicação. No segundo, pressione Ctrl + V repetidamente quantas forem necessárias para continuar replicando a linha.
Luty 20/10

34

Ctrl+ Dfunciona para mim no VS2012 com o Resharper. É a tecla de atalho do Resharper.


11
não, não, só percebi isso após a postagem, mas é um atalho do Resharper. e se alguém tiver o recarregador instalado, isso poderá ajudar.
Sawe

1
Tenho um afiador novamente e não conhecia esse atalho! Obrigado.
DanO 28/10

Esse é o atalho padrão se você estiver usando o esquema de teclado "Resharper 2.x ou IntelliJ IDEA" do Resharper. O Re-compartilhador selecionou o mapeamento do teclado durante a instalação. O esquema de teclado do "Visual Studio" é uma das opções. Se você escolher o esquema de teclado "Visual Studio", Ctrl + D será mapeado para outra coisa.
GeoMac 28/04

Essa é uma resposta para uma pergunta do ReSharper.
Antony Booth

Observe que isso também funciona quando várias linhas são selecionadas, ou seja, você pode duplicar um monte de código, não apenas uma linha. A desvantagem, é claro, é que o re-compartilhador não é gratuito (mas parece que o mundo .Net está mais acostumado com isso do que o mundo Java de onde eu venho).
Amos M. Carpenter

31

No Visual Studio 2013, você pode usar Ctrl+ C+V


2
Ainda bem que passei. Era isso que eu queria.
Daryl

Trabalhando no VS Code Linux também.
Han

4
Precisa de uma solução sem substituir a área de transferência
Pierre de LESPINAY

2
Seria ótimo se não substituir a área de transferência
mikus

23

A seguir, uma macro baseada na do link publicado por Wael, mas aprimorada nas seguintes áreas:

  • ligeiramente mais curto
  • um pouco mais rápido
  • comentários :)
  • se comporta para linhas começando com "///"
  • pode ser desfeito com um único desfazer
Imports System
Imports EnvDTE
Imports EnvDTE80

Public Module Module1

    Sub DuplicateLine()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection
        sel.StartOfLine(0) '' move to start
        sel.EndOfLine(True) '' select to end
        Dim line As String = sel.Text
        sel.EndOfLine(False) '' move to end
        sel.Insert(ControlChars.NewLine + line, vsInsertFlags.vsInsertFlagsCollapseToEnd)
    End Sub

End Module

1
Sim, este realmente funciona, aquele na resposta aceita estava copiando coisas aleatórias para a nova linha. Bom trabalho, obrigado!
Zuallauz 27/07/12

Não encontrei a opção Macros no VS 2010 Express. Isso pode ser implementado aí?
Nenotlep

1
Após fevereiro de 2014, as macros são desativadas por motivos de segurança. Role para baixo e veja a resposta do MasterHD para a solução alternativa para que o método de Mark continue funcionando mesmo após a atualização de segurança.
MasterHD

11

Se você gosta de duplicar a linha de estilo eclipse (ou bloco) usando CTRL+ ALT+ UPou CTRL+ UP+ DOWN, abaixo eu posto macros para este fim:

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DuplicateLineModule
    Sub DuplicateLineDown()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.TopLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.EndOfLine()
        selection.Insert(vbNewLine & line)
    End Sub
    Sub DuplicateLineUp()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        lineNumber = selection.BottomLine
        line = selection.Text

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.Insert(vbNewLine & line)
        selection.MoveToDisplayColumn(lineNumber, 0)
    End Sub
End Module

10

Por que tantos métodos prolongados para realizar algo tão simples? Demora menos de um minuto para baixar e instalar a extensão da Microsoft. A página diz que o vinculará a ALT+ Dpor padrão, mas, para mim, vinculou-o a CTRL+ Dautomaticamente no Visual Studio Community 2015 sem nenhuma alteração.

Aqui está o link para baixar a extensão do Microsoft.com.


A questão é sobre o Visual Studio 2008, e não 2015 :)
SARCOM

Note-se que esta extensão duplica as linhas selecionadas, e não a seleção. Mas ainda é útil.
ANeves

Este é mais útil para mim porque eu queria uma solução que não substituísse o que eu tinha na área de transferência. Esta extensão é exatamente o que eu estava procurando. E de acordo com o autor de extensão, este atualmente trabalha para Visual Studio 2012, 2013, 2015 e 2017.
Mark

8

No código do visual studio ( WebMatrix ):

Copiar linhas para baixo: Shift+ Alt+down

Copiar linhas para cima: Shift+ Alt+up

Excluir linhas: Ctrl+ Shift+k


1
Esta é a melhor resposta até agora; isso permitirá que você duplique um bloco completo de código - se desejar - apenas selecionando várias linhas. Testado no Visual Studio Code 1.7.2
Victor Barrantes

7

Embora perceba que esse não é um atalho de teclado, achei que o adicionaria, pois não requer o uso da área de transferência e pode ajudar algumas pessoas.

Destaque a linha que você deseja duplicar. Pressione controle, clique com o mouse no texto destacado e arraste para onde deseja ir. Ele duplicará o texto destacado.


Alcança o mesmo resultado com a funcionalidade incorporada! E a pergunta apenas pedia um atalho - não necessariamente um atalho de teclado! Ainda assim, seria mais impressionante se o mouse não tivesse que estar envolvido.
DanO 28/10

7

Como não posso usar macros no Visual Studio 2013, encontrei um plug-in do Visual Studio (uso em 2012 e 2013). Seleção duplicada duplica seleções e Linhas inteiras - elas precisam ser selecionadas apenas parcialmente. O atalho padrão é ALT+ D.


5

Não sei se isso existe no Visual Studio 2008, mas no Visual Studio 2010 ou superior, você pode fazer isso facilmente:

Não selecione nada e pressione Ctrl+ CE depois (sem fazer mais nada) Ctrl+V


5

No Visual studio 2017 e talvez em outra versão Não há necessidade de macro ou extensão ,

  1. Vamos para Tools > Options > Environment > Keyboards
  2. Sob Show commands containing:gravaçãoEdit.Duplicate
  3. Coloque o cursor Press shortcut keys:e pressione Ctrl+ De clique no Assignbotão
  4. clique OKpara salvar seu novo atalho de teclado

insira a descrição da imagem aqui


4

Estou usando a macro que Wael postou: comando de linha duplicada para o Visual Studio , mas parou de funcionar há uma semana, presumi que devido a uma atualização do Windows. E eu estava certo, em fevereiro de 2014, as macros foram desativadas no VS2010 (e 2008 aparentemente).

Para corrigir isso, você precisará desinstalar as atualizações de segurança ou adicionar uma linha de código nos arquivos de configuração, como mostrado aqui .

Em uma máquina Windows de 64 bits, os caminhos padrão para esses arquivos são:

  • C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv10.exe.config
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

    ...
    <configuration>
        <runtime>
            <AllowDComReflection enabled="true"/>
            ...
    

    captura de tela do editor

Você DEVE executar seu editor de texto com direitos de administrador ou ele não funcionará! Espero que isso ajude qualquer pessoa que repentinamente tenha sua funcionalidade de macro puxada por baixo deles.


4

para Visual Studio 2012, 2013, 2015, 2017, siga o link e baixe a extensão

https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection

Agora vá em Ferramentas> Opções> Teclado e digite "Duplicar" na caixa de pesquisa (a cadeia de comandos completa é "Edit.DuplicateSelection"). Aqui você pode vinculá-lo a qualquer atalho da mesma maneira que faria com qualquer outro comando.


3

Basta colocar o mouse na linha para copiar e fazer CTRL+ C, depois CTRL+ Vna mesma linha. Funciona como mágica :-)



3

Para aqueles que ainda visualizam esta pergunta no Visual Studio pós-2008, um Edit.Duplicate real foi adicionado:

  • CTRL+ E,V
  • CTRL+ D(VS 2017 15.6+)

2

Ctrl+ Dé um novo atalho introduzido no VS 2017 v15.6 que parece fazer exatamente o que Ctrl+ E,V

Ctrl + D duplicará a linha em que está o cursor e o inserirá logo abaixo da linha em foco. Se você deseja duplicar um conjunto específico de código, basta selecionar a parte do código que deseja duplicar antes de chamar o comando de código duplicado.

Não afetará sua área de transferência

Fonte


1
Instalar fresco de VS2017 e VS2019: Ctrl + D não é, por padrão mapeado para Editor.DuplicateLine ...
thomasgalliker

2

Para o Visual Studio Code 2019 :

Edite atalhos de teclado do menu com: ctrl+k e ctrl+s

Edite "Copiar linha para baixo" ( Shift+ Alt+ DownArrow) no seu próprio atalho.

Você pode encontrá-lo, com o ID do comando: editor.action.copyLinesDownAction

Para mim, é ctrl+d


1

http://www.jetbrains.com/resharper/

Minha história: comecei a trabalhar em uma nova empresa, nunca usei o Visual Studio antes. Uma das primeiras coisas - como duplicar a linha. Depois de configurar a macro, o ReSharper me disse: gostaria de substituir meu atalho que era: "texto duplicado" :)


ReSharper - muito lento
Horev Ivan

1

No Visual Studio 2010, você copia toda a linha em que o cursor está CTRL+, INSERTe pode usar Ctrl+ Vou SHIFT+ INSERTpara colá-lo.



1

O comando que você deseja é Edit.Duplicate . Ele é mapeado para CtrlE, CtrlV. Isso não substituirá sua área de transferência.


1

Eu uso o link do aplicativo: AutoHotkey com o código abaixo salvo no CommentDuplikateSaveClipboard.ahkarquivo. Você pode editar / remover atalhos, é fácil.
Eu tenho um atalho para este arquivo "Shortcut to CommentDuplikateSaveClipboard.ahk"em Autostartem janelas.
Este script protege sua área de transferência.
Se você estiver mais curioso, adicione atalhos ao script habilitável / habilitado.
Eu às vezes uso muito impressionante Multi Clipboardscript para fácil manuseio com muitos clipssalvos no disco e uso com CTRL+ C, X, Vcopiar, colar, recortar, seguinte, anterior, apague isso, exclua todos.

;CommentDuplikateSaveClipboard.ahk

!c:: ; Alt+C === Duplicate Line
^d:: ; Ctrl+D
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!x:: ; Alt+X === Comment Duplicate Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{HOME}{SHIFTUP}{CTRLDOWN}c{CTRLUP}{LEFT}//{END}{ENTER}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!z:: ; Alt+Z === Del uncomment  Line
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}{HOME}{DEL}{DEL}
Clipboard := ClipSaved
ClipSaved =
return

!d:: ; Alt+D === Delete line
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{DEL}
return

!s:: ; Alt+S === Swap lines
ClipSaved := ClipboardAll
Send, {END}{SHIFTDOWN}{UP}{END}{SHIFTUP}{CTRLDOWN}x{CTRLUP}{UP}{END}{CTRLDOWN}v{CTRLUP}{HOME}
Clipboard := ClipSaved
ClipSaved =
return

!a:: ; Alt+A === Comment this line, uncomment above
Send, {END}{HOME}//{UP}{HOME}{DEL}{DEL}
return

0

Não é uma resposta, é apenas uma adição útil: como brinde, acabei de inventar (bem ... ehm ... ajustei o código postado por Lolo) uma macro RemoveLineOrBlock. Aproveitar!

Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics

Public Module RemoveLineOrBlock

    Sub RemoveLineOrBlock()
        Dim selection As TextSelection = DTE.ActiveDocument.Selection
        Dim lineNumber As Integer
        Dim line As String

        If selection.IsEmpty Then
            selection.StartOfLine(0)
            selection.EndOfLine(True)
        Else
            Dim top As Integer = selection.TopLine
            Dim bottom As Integer = selection.BottomLine

            selection.MoveToDisplayColumn(top, 0)
            selection.StartOfLine(0)

            selection.MoveToDisplayColumn(bottom, 0, True)
            selection.EndOfLine(True)
        End If

        selection.LineDown(True)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn,True)

        selection.Delete()

        selection.MoveToDisplayColumn(selection.BottomLine, 0)
        selection.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstText)

    End Sub

End Module

0

no VS2019 e também em VS2017 você pode selecionar Ferramentas> Opções> Teclado e você pode escolher no menu suspenso esquema ReSharper (Visual Studio) opção, e você vai ter um mapeamento como se você estivesse usando ReSharper , neste caso Ctrl+ Dfará o truque para duplicar a linha. De qualquer forma, com base na documentação, isso deve estar fora do portão no Visual Studio 2017 Versão 15.8 ou superior


-3

Para o visual studio 2010, tente usar estes comandos para duplicação rápida de linha (usa a área de transferência):

  • Clique na linha que deseja copiar. Ctrl+ Ccopiará essa linha.

  • Em seguida, pressione Ctrl+ Shift+ Enterpara inserir um espaço em branco abaixo do ponto de inserção

    (Como alternativa, use Ctrl+ Enterpara inserir uma linha em branco acima do ponto de inserção.)

  • Em seguida, basta usar Ctrl+ Vpara colar a linha.


1
Muito boas instruções passo a passo para copiar e colar. Mas o OP está procurando um método para duplicar uma linha ...
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.