web-dev-qa-db-fra.com

Visual Studio: touche de raccourci: ligne en double

Existe-t-il un raccourci pour la commande ligne en double dans Visual Studio 2008?

Quelques exemples similaires:

377
Posto

Dans Visual Studio 2017

(modifier) ​​Cette fonctionnalité est désormais intégrée à VS2017: Ctrl + EV duplique une ligne si rien n'est sélectionné, ou duplique la sélection. Vous pouvez l'assigner à une autre combinaison de touches ou la trouver dans le menu:

Duplicate line in VS2017

Voir cette référence pour plus d'informations.

Pre VS2017, méthode intégrée utilisant le presse-papier

Comme @cand mentionné, vous pouvez simplement faire Ctrl + C ; Ctrl + V.

Ctrl + C va copier la ligne si rien n'est sélectionné.

Solution macro (pré VS2017)

Si vous souhaitez implémenter une solution plus complète, par exemple pour créer un raccourci clavier plus simple ou si vous ne souhaitez pas appliquer le Presse-papiers, consultez ce guide:

commande de ligne en double pour Visual Studio

Visual Basic:

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

Pour créer la macro, allez simplement dans l’explorateur de macros ("Outils-> Macros-> Explorateur de macros" ou Alt+F8) et copiez-collez le code dans un nouveau module. Maintenant, assignez-lui un raccourci clavier:

  1. allez dans Outils-> Options ...
  2. sous Environnement, cliquez sur Clavier.
  3. dans la zone de texte "Afficher les commandes contenant", entrez "dupliquer" (selon le nom que vous avez donné au module.)
  4. vous devriez maintenant voir la macro dans la liste ci-dessous
  5. choisissez "Éditeur de texte" dans la liste "Utiliser un nouveau raccourci dans"
  6. mettez le focus dans la zone de texte "Appuyez sur les touches de raccourci" et appuyez sur la combinaison de touches que vous souhaitez utiliser (Ctrl+Shift+D dans mon cas)
  7. cliquez sur le bouton "Assign"
  8. vous devriez maintenant voir le raccourci dans la zone de texte "Raccourcis pour la commande sélectionnée"
  9. cliquez sur le bouton OK

Et c'est tout. Prendre plaisir!

345
Wael Dalloul

Il existe une extension gratuite que vous pouvez télécharger ici qui vous permet de dupliquer des lignes sans remplacer le contenu du presse-papiers.

Par défaut, il est lié à Alt + D, mais vous pouvez le changer en tout ce que vous voulez en allant dans Outils-> Options-> Environnement-> Clavier. Tapez "Dupliquer" dans le champ de recherche et cherchez "Edit.DuplicateSelection" et éditez le raccourci vers celui que vous souhaitiez. je préfère Ctrl + D être cohérent avec les autres éditeurs.

127
Ben

C'est simple Ctrl + C ; Ctrl + V , vérifiez ceci lien . Tant que vous ne sélectionnez aucun texte, cela dupliquera la ligne sur laquelle se trouve le curseur lorsque vous appuyez sur Ctrl+C.

88
cand

Ctrl + C + V fonctionne pour moi sur VS2012 sans extension.

71
nGoline

Ctrl + D travaille pour moi dans VS2012 avec Resharper. C'est la touche de raccourci de Resharper.

30
sawe

Dans Visual Studio 2013, vous pouvez utiliser Ctrl+C+V

27
Vazgen Torosyan

Voici une macro basée sur celle du lien posté par Wael, mais améliorée dans les domaines suivants:

  • légèrement plus court
  • légèrement plus rapide
  • commentaires :)
  • se comporte pour les lignes commençant par "///"
  • peut être annulé avec une seule annulation
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
20
Mark Foreman

Si vous aimez la duplication de ligne (ou de bloc) de style Eclipse avec CTRL+ALT+UP ou CTRL+UP+DOWN, je publie ci-dessous des macros à cet effet:

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
11
Krzysztof

Pourquoi autant de méthodes de longue haleine pour accomplir quelque chose d'aussi simple? Il faut moins d’une minute pour télécharger et installer l’extension de Microsoft. La page dit qu'elle le liera à ALT+D par défaut, mais pour moi, il est lié à CTRL+D automatiquement dans Visual Studio Community 2015 sans aucune modification.

Voici le lien pour télécharger l'extension à partir de Microsoft.com.

10
Daniel

En code Visual Studio (WebMatrix):

Copier les lignes vers le bas: Shift + Alt + down

Copier les lignes vers le haut: Shift + Alt + up

Supprimer des lignes: Ctrl + Shift + k

8
mghhgm

Bien que je réalise que ce n’est pas un raccourci clavier, j’ai pensé que j’ajouterais ceci, car cela n’exige pas l’utilisation du presse-papier et pourrait aider certaines personnes.

Mettez en surbrillance la ligne que vous souhaitez dupliquer . Appuyez sur Ctrl, cliquez avec la souris sur le texte en surbrillance et faites-la glisser à l'endroit où vous souhaitez aller. Cela va dupliquer le texte surligné.

7
Warty

Comme je ne peux pas utiliser de macros dans Visual Studio 2013, j'ai trouvé un plugin Visual Studio (je l'utilise en 2012 et 2013). Sélection en double duplique les sélections et les lignes entières - elles doivent seulement être sélectionnées partiellement. Le raccourci standard est ALT + D.

7
Lebewesen

Je ne sais pas si cela existe dans Visual Studio 2008, mais dans Visual Studio 2010+, vous pouvez facilement le faire en:

Ne sélectionnez rien, puis appuyez sur Ctrl + C Et ensuite (sans rien faire d'autre) Ctrl + V

5
Alireza Noori

J'utilise la macro que Wael a publiée: Commande de ligne en double pour Visual Studio , mais elle a cessé de fonctionner il y a une semaine. , J'ai supposé à cause d'une mise à jour de Windows. Et j'avais raison, à partir de février 2014, les macros ont été désactivées dans VS2010 (et 2008 apparemment).

Pour résoudre ce problème, vous devrez soit désinstaller les mises à jour de sécurité, soit ajouter une ligne de code dans les fichiers de configuration, comme indiqué ici .

Sur une machine Windows 64 bits, les chemins d'accès par défaut à ces fichiers sont les suivants:

  • 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"/>
            ...
    

    editor screenshot

Vous DEVEZ exécuter votre éditeur de texte avec des droits d'administrateur ou il a gagné ça marche pas! J'espère que cela aidera toute autre personne dont la fonctionnalité macro aura été retirée soudainement.

4
MasterHD

Dans Visual Studio 2008, vous pouvez utiliser CTRL + C + V

3
user5460893

Il suffit de placer votre souris sur la ligne pour copier et faire CTRL+C ,ensuite CTRL+V sur la même ligne. Fonctionne comme par magie :-)

3

Dans Visual studio 2017 et peut-être une autre version Aucune macro ou extension requise ,

  1. Allez à Tools > Options > Environment > Keyboards
  2. Sous Show commands containing: write Edit.Duplicate
  3. Placez le curseur sur Press shortcut keys: et appuyez sur Ctrl + D et cliquez sur le bouton Assignname__
  4. cliquez sur OKpour enregistrer votre nouveau raccourci clavier

enter image description here

2
ewwink

Pour ceux qui consultent toujours cette question sur Visual Studio après 2008, un véritable Edit.Duplicate a été ajouté:

  • CTRL+EV
  • CTRL+D (VS 2017 15.6+)
2
icanfathom

La commande que vous voulez est Edit.Duplicate. Il est mappé sur CtrlECtrlV. Ceci ne le fera pas écrase votre presse-papiers.

1
HaveSpacesuit

Dans Visual Studio 2010, vous copiez toute la ligne sur laquelle se trouve le curseur. CTRL + INSERT alors vous pouvez utiliser Ctrl + V ou SHIFT + INSERT pour le coller.

1
Crackerjack

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

Mon histoire: a commencé à travailler dans une nouvelle société, n'avait jamais utilisé Visual Studio auparavant. Une des premières choses - comment dupliquer une ligne. Après avoir configuré la macro ReSharper m'a dit: voulez-vous remplacer mon raccourci qui était: "texte en double" :)

1
Michal Stefanow

VS 2017 sa Ctrl + D ou Ctrl + C; Ctrl + V ils travaillent tous les deux pour moi.

1

J'utilise le lien d'application: AutoHotkey avec le code ci-dessous enregistré dans le fichier CommentDuplikateSaveClipboard.ahk. Vous pouvez modifier/supprimer des raccourcis, c'est facile.
J'ai un lien vers ce fichier "Shortcut to CommentDuplikateSaveClipboard.ahk" in Autostart in windows.
Ce script protège votre presse-papiers.
Si vous êtes plus curieux, vous ajouteriez des raccourcis au script thisable/enable.
J'utilise parfois un script très impressionnant Multi Clipboard pour le manipuler facilement avec de nombreux clips sauvegardés sur disque et utilisés avec CTRL+C,X,V copier, coller, couper, suivant, précédent, supprimer ceci, supprimer tout.

;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
1
MrHIDEn

pour Visual Studio 2012, 2013, 2015, 2017 suivez le lien et téléchargez l'extension

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

Maintenant, allez dans Outils> Options> Clavier, et tapez "Dupliquer" dans le champ de recherche (la chaîne de commande complète est "Edit.DuplicateSelection"). Ici, vous pouvez le lier à n’importe quel raccourci de la même manière que pour toute autre commande.

1
Kalyan Halder Raaz

Ctrl + D est un nouveau raccourci introduit dans VS 2017 v15.6 qui semble faire exactement ce que Ctrl + EV

Ctrl + D va dupliquer la ligne dans laquelle se trouve le curseur et l'insérer juste en dessous de la ligne sélectionnée. Si vous souhaitez dupliquer un ensemble de code spécifique, sélectionnez simplement la partie de code que vous souhaitez dupliquer avant d'appeler la commande de code dupliqué.

Cela n'affectera pas votre presse-papier

Source

0
Kautsky Lozano

dans VS2019 et aussi dans VS2017 vous pouvez sélectionner Outils-> Options-> Clavier et vous pouvez choisir dans la liste déroulante Resharper (Visual Studio) , et vous obtiendrez un mappage comme si vous utilisiez Resharper , dans ce cas Ctrl + D fera le tour pour dupliquer la ligne. Quoi qu'il en soit, sur la base de la documentation , cela devrait être hors de la porte dans Visual Studio 2017 version 15.8 ou plus

0
ddieppa

Pas une réponse, juste un ajout utile: En cadeau, je viens d’inventer (eh bien ... ehm ... ajusté le code posté par Lolo) une macro RemoveLineOrBlock. Prendre plaisir!

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
Peter Perháč