Visual Studio:ショートカットキー:重複行


423

Visual Studio 2008にDuplicate Lineコマンドのショートカットはありますか?

同様の例:


6
参考までに、ReSharperが提供する多くの利点の1つは、これを実行する機能です。
AakashM 2010

2
visualstudiogallery.msdn.microsoft.com/… これをダウンロードしてalt + Dを押すと、選択が複製されます。ハイライト表示されていない場合は、行全体が複製されます。残念ながら、ビジュアルベーシックマクロは2013年には機能しないようで、jsマクロのみです。
2015年

1
OMG、ラインを複製するために組み合わせを人に割り当てる問題は何ですか??? 私はEclipseを使用していました。Ctrl + Dは行を削除するためのものです。なぜそれがVSでとても複雑なのですか?
Andrii Muzychuk 2015

2
以下の@mghhgmがあなたが探している答えです(shift + alt + downまたはshift + alt + up)
Victor Barrantes

1
vimの例は重複しておらず、ctrl + c; ctrl + vです。「ヤンク」カット、pペースト。他の例とまったく同じではありません。
ANeves

回答:


406

Visual Studio 2019で

Ctrl + D

Visual Studio 2017(v15.6以降)

Ctrl + D

Visual Studio 2017(v15.6より前)

(編集)この機能はVS2017に組み込まれています:Ctrl+ EV何も選択されていない場合に行を複製するか、選択を複製します。別のキーの組み合わせに割り当てるか、メニューで見つけることができます。

VS2017の重複行

詳細については、このリファレンス参照してください。

VS2017より前、クリップボードを使用した組み込みメソッド

@candが述べたように、あなたはCtrl+を実行することができCます。Ctrl+ V

Ctrl+ C何も選択されていない場合、行をコピーします。

マクロソリューション(VS2017以前)

より完全なソリューションを実装したい場合、より単純なキーボードショートカットを作成したい場合、またはクリップボードに影響を与えたくない場合は、次のガイドを参照してください。

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

マクロを作成するには、マクロエクスプローラー(「ツール」->「マクロ」->「マクロエクスプローラー」またはAlt+ F8)に移動し、コードを新しいモジュールにコピーして貼り付けます。次に、キーボードショートカットを割り当てます。

  1. [ツール]-> [オプション...]に移動します
  2. 環境の下で、キーボードをクリックします
  3. 「次を含むコマンドを表示」テキストボックスに「複製」と入力します(これは、モジュールに付けた名前に基づいています)。
  4. 下のリストにマクロが表示されます
  5. 「新しいショートカットを使用」リストから「テキストエディター」を選択します
  6. [ショートカットキーを押す]テキストボックスにフォーカスを設定し、使用するキーボードの組み合わせを押します(私の場合はCtrl+ Shift+ D)。
  7. 「割り当て」ボタンを押す
  8. 「選択したコマンドのショートカット」テキストボックスにショートカットが表示されます
  9. OKボタンを押してください

以上です。楽しい!


3
試してみたところ、次のような短いタグを持つ「サーバー側コードブロック」があると、余分な文字が繰り返されるのが興味深いです。- <div>Profile.UserName: <%=Profile.UserName %></div>このマクロを使用してこの行を複製すると、次のようになります<div>Profile.UserName: <%=Profile.UserName %></div> %></div>。ご覧のとおり、最後の部分は「繰り返し」です。そこにサーバー側のコードブロックがない場合、問題なく動作します。そのための回避策を知っていますか?ちなみに、私が経験したもう1つの興味深いことは、このマクロは比較的 "遅い"ことです。これは予想していませんでした... :)
Sk8erPeter

6
2014年2月以降、セキュリティ上の理由からマクロは無効になっています。下にスクロールして、回避策についてのMasterHDの回答を参照し、セキュリティ更新後もWaelのメソッドが機能し続けるようにします。
MasterHD 2014

4
クリップボードに既に何かをコピーしていて、貼り付ける前に行を複製したい場合、Ctrl C + Ctrl Vが制限的であることがわかりました。
16年

1
他のほとんどのエディターが非常に効率的かつ直感的に実行する複製アクションまたはキーバインドを実装することがそれほど難しいのはなぜですか。:/
kisanme 2016

1
なぜそれが必要なのか。他のタブでsmthをコピーしました。このタブの特定の行に移動し、行を複製して<code> CTRL + V </ code>を使用してコードを貼り付けます。それ以外の場合は、他のコード部分を再度コピーする必要があります。 ..
2017

136

ここからダウンロードできる無料の拡張機能があり、クリップボードの内容を置き換えずに行を複製できます。

デフォルトではAlt+ Dにバインドされていますが、[ツール]-> [オプション]-> [環境]-> [キーボード]に移動して、任意の値に変更できます。検索ボックスに「複製」と入力し、「Edit.DuplicateSelection」を探して、必要なものへのショートカットを編集します。Ctrl+ Dは他のエディターとの一貫性を優先します。


23
これはあなたが探している本当の答えです。ここに投稿された他のすべては賢いですが、求められたものではありません。
Remco Boom 2013

8
Edit.DuplicateSelectionVSE 2013には存在しないようです。実際、重複する用語が含まれるものは何もありません。
ᴍᴀᴛᴛʙᴀᴋᴇʀ


2
マシュー、こちらのリンクをクリックして拡張機能をインストールする必要があります。次に、ビジュアルスタジオを閉じて再度開く必要があります。次に、ツール==>オプション==>環境==>キーボードに移動し、次にDuplicateと入力する必要があります。表示されます。次に、F4を押すと、QEDITのように機能し、必要なものをすべて使用でき、生活が良くなります。
ggb667 2014

別のツールをインストールしなければならないのが少し面倒な場合でも、これがうまく機能します。よろしくお願いします!
Sbu 2014年

94

シンプルですCtrl+ C; Ctrl+ V、このリンクを確認して ください。テキストを選択しない限り、Ctrl+ を押したときにカーソルが置かれている行が複製されますC


159
たとえば、線を複製して、その中の一部のコンテンツをクリップボードにあるもので置き換える場合など、クリップボードを通過したくない場合が数多くあります。
Effata

7
もちろん、質問はショートカットを求めたものであり、テキスト編集の一般的な解決策を求めたものではなかったので、単純な目的にはそれで十分だと思います(少なくとも私の場合はそうでした)。
2010年

4
感謝しますが、Edit PlusのCtrl + jまたはNotepad ++のCrtl + Dのようなものが期待されていました... VS2008またはVS2010に何かあります
Posto

2
私はこれを見つけただけです。ただし、それほど悪くはありません-もちろんctrl + Dを使用する方が簡単ですが、1行を100コピーで複製したい場合は、ctrl + cを使用して実行できます(何も選択せずに、目的の行の上にコマンドプロンプトを置くだけです) )+ ctrl + vの100倍。ctrl + dソリューションよりもキーストロークの1つのセットにすぎません。より複雑な複製を行う場合は、さらに問題が生じる可能性があります。
10

@ Mason240これは、受け入れられた回答の引用部分に対する私の最初の反応でもありましたが、追加情報「テキストを選択しない限り、これによりカーソルが置かれている行が複製されます...」私の場合の解決策。
RyanfaeScotland 2014

74

Ctrl+ C+ VVS2012では、拡張子なしで動作します。


VS2008でも動作します!
teodron

1
VS2017で動作します。
カイルデラニー

8
クリップボードの上書きなしのソリューションが必要
Pierre de LESPINAY 2017

答えを補足するためだけに、最初の複製のために完全な組み合わせを押す必要があるだけです。2番目のものから、ラインを複製し続けるのに必要なだけCtrl + Vを繰り返し押します。
Luty

34

Ctrl+ DResharperを使用してVS2012で動作します。Resharperのホットキーです。


11
いいえ、そうではなく、投稿後に気づ​​いただけでなく、Resharperのショートカットです。リシャーパーがインストールされている場合は、これが役立ちます。
13

1
私はリシャーパーを持っています、そしてそのショートカットを知りませんでした!ありがとう。
DanO 2013年

これは、Resharperの「Resharper 2.xまたはIntelliJ IDEA」キーボードスキームを使用している場合のデフォルトのショートカットです。Resharperでは、インストール中にキーボードマッピングを選択する必要があります。「Visual Studio」キーボード方式は選択肢の1つです。"Visual Studio"キーボードスキームを選択すると、Ctrl + Dが別のものにマップされます。
GeoMac、2017

これがReSharperの質問に対する答えです。
Antonyブース

これは複数の行が選択されている場合にも機能することに注意してください。つまり、1行だけでなく、コード全体を複製できます。もちろん、リシャーパーは無料ではないという欠点があります(ただし、.Netの世界は、Javaの世界よりも慣れているようです)。
Amos M. Carpenter


23

これは、Waelによって投稿されたリンクのマクロに基づくマクロですが、次の領域で改善されています。

  • 少し短い
  • 少し速い
  • コメント:)
  • 「///」で始まる行に対して動作します
  • 1回の取り消しで元に戻すことができます
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
ええ、これは実際に機能します。受け入れられた答えの1つは、ランダムなものを新しい行にコピーすることでした。ありがとうございます。
zuallauz 2012

VS 2010 Expressでマクロオプションが見つかりませんでしたが、これはそこで実装できますか?
Nenotlep 2013

1
2014年2月以降、セキュリティ上の理由からマクロは無効になっています。下にスクロールして、回避策についてのMasterHDの回答を参照し、セキュリティ更新後もMarkのメソッドが機能し続けるようにします。
MasterHD 2014

11

CTRL+ ALT+ UPまたはCTRL+ UP+ を使用してEclipseスタイルのライン(またはブロック)の複製が必要な場合はDOWN、以下の目的でマクロを投稿します。

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

なぜそんなに単純なことを達成するためにそれほど多くの長い間引き出された方法があるのですか?Microsoftから拡張機能をダウンロードしてインストールするのに1分もかかりません。このページには、デフォルトでALT+にバインドされると記載Dされていますが、Visual Studio Community 2015では、変更なしで自動的にCTRL+ にバインドされDます。

Microsoft.comから拡張機能をダウンロードするためのリンクは次のとおりです。


問題は、2015年ではなくVisual Studio 2008に関するものです。:)
sarcom

この拡張子は、選択ではなく選択された行を複製することに注意してください。しかし、それはまだ便利です。
ANeves

クリップボードにあるものを置き換えないソリューションが必要だったので、これは私にとって最も便利です。この拡張機能は、まさに私が探していたものです。そして拡張の作者によると、これは現在のVisual Studio 2012、2013、2015年のために働く、と2017年
マーク

8

ではVisual StudioのコードWebMatrixの):

下に行をコピー:Shift+ Alt+down

行を上にコピー:Shift+ Alt+up

行を削除:Ctrl+ Shift+k


1
これが今のところ最良の答えです。複数行を選択するだけで、必要に応じてコードの完全なブロックを複製することもできます。Visual Studio Code 1.7.2でテスト
Victor Barrantes

7

これはキーボードショートカットではないことに気づきましたが、クリップボードを使用する必要がなく、一部の人を助ける可能性があるため、これを追加すると思いました。

複製する行を強調表示します。コントロールを押し、強調表示されたテキストをマウスでクリックし、行きたい場所にドラッグします。ハイライトされたテキストを複製します。


ビルトイン機能で同じ結果を実現!そして、質問はショートカットだけを求めました-必ずしもキーボードショートカットではありません!それでも、マウスが関与する必要がなかった場合は、さらに素晴らしいでしょう。
DanO 2013年

7

Visual Studio 2013ではマクロを使用できないため、Visual Studioプラグインを見つけました(2012および2013で使用しています)。 選択の複製は、選択とライン全体を複製します-それらは部分的に選択する必要があるだけです。標準のショートカットはALT+ Dです。


5

これがVisual Studio 2008に存在するかどうかはわかりませんが、Visual Studio 2010以降では、次の方法で簡単に実行できます。

何も選択せずにCtrl+ を押してCから(他に何もしないで)Ctrl+V


5

Visual Studio 2017およびおそらく他のバージョンでは、マクロや拡張機能必要ありません

  1. に行く Tools > Options > Environment > Keyboards
  2. 下のShow commands containing:書き込みEdit.Duplicate
  3. カーソルを置きPress shortcut keys:Ctrl+ Dを押してクリックAssign押し、ボタンます
  4. クリックOKして新しいキーボードショートカットを保存します

ここに画像の説明を入力してください


4

Waelが投稿したマクロVisual StudioのDuplicate line commandを使用していますが、1週間前に機能しなくなりました。Windowsの更新が原因でした。そして私は正しかった、2014年2月の時点で、VS2010(および明らかに2008)ではマクロが無効になっています。

これを修正するには、セキュリティアップデートをアンインストールするか、ここに示すように、構成ファイルに1行のコードを追加する必要があります

64ビットWindowsマシンでは、これらのファイルへのデフォルトパスは次のとおりです。

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

    エディターのスクリーンショット

テキストエディターは管理者権限で実行する必要があります。そうしないと機能しません。うまくいけば、これにより、マクロ機能が突然その下から引き出されるようになった他の人を助けることができます。


4

以下のためのVisual Studio 2012、2013、2015、2017、リンクをたどると、拡張機能をダウンロード

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

次に、[ツール]> [オプション]> [キーボード]に移動し、検索ボックスに「複製」と入力します(コマンド文字列全体は「Edit.DuplicateSelection」です)。ここでは、他のコマンドと同じように、ショートカットにバインドできます。




3

2008年以降のVisual Studioでこの質問をまだ表示している人のために、実際のEdit.Duplicateが追加されています。

  • CTRL+ EV
  • CTRL+ D(VS 2017 15.6以降)

2

Ctrl+ Dその正確なことを行うように思わVS 2017 v15.6で導入された新しいショートカットですCtrl+はEV

Ctrl + Dは、カーソルがある行を複製し、フォーカスされている行のすぐ下に挿入します。特定のコードセットを複製する場合は、コードの複製コマンドを呼び出す前に、複製するコードの部分を選択するだけです。

クリップボードには影響しません

ソース


1
VS2017とVS2019の新規インストール:Ctrl + DはデフォルトではEditor.DuplicateLine ...にマップされていません
thomasgalliker

2

Visual Studio Code 2019の場合

ctrl+k+でメニューのキーボードショートカットを編集します。ctrls

「下にコピー」(Shift+ Alt+ DownArrow)を編集して独自のショートカットを作成します。

コマンドID:editor.action.copyLinesDownActionで見つけることができます。

私にとって、それはctrl+ですd



1

Visual Studio 2010では、カーソルがある行全体をCTRL+でコピーしてから、+ または+ をINSERT使用して貼り付けることができます。CtrlVSHIFTINSERT



1

必要なコマンドはEdit.Duplicateです。それはにマッピングされCtrlECtrlV。これはしませんクリップボードを上書きし。


1

アプリケーションリンクを使用:AutoHotkey以下のコードをCommentDuplikateSaveClipboard.ahkファイルに保存。ショートカットは簡単に編集/削除できます。Windowsで
このファイル"Shortcut to CommentDuplikateSaveClipboard.ahk"にリンクしていますAutostart
このスクリプトはクリップボードを保護します。
もっと知りたい場合は、thisable / enableスクリプトにショートカットを追加します。
私は時々非常に印象的な使用Multi Clipboardの多くで簡単にハンドルに、スクリプトをclips使用してディスクや使用上に保存CTRL+ CXV、カット、コピー&ペーストして、次、前、これを削除し、すべてを削除します。

;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

答えではなく、便利な追加です:景品として、私はRemoveLineOrBlockマクロを考案しました(ええと...えーと... Loloによって投稿されたコードを調整しました)。楽しい!

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

VS2019ともにVS2017を選択できツール- >オプション- >キーボードを、あなたはスキームドロップダウンで選択することができますReSharperの(Visual Studioの)オプション、およびあなたが使用していた場合のようなマッピングを取得しますReSharperのを、この場合には、Ctrl+ D行を複製するためのトリックを行います。とにかく、ドキュメントに基づいて、これはVisual Studio 2017バージョン15.8以降のゲートの外にあるはずです


-3

Visual Studio 2010では、次のコマンドを使用して行をすばやく複製してみてください(クリップボードを使用)。

  • コピーする行をクリックします。 Ctrl+ Cはその行をコピーします。

  • 次にCtrl+ Shift+ Enterを押して、挿入ポイントの下に空白を挿入します

    (または、Ctrl+ Enterを使用して、挿入ポイントの上に空白行を挿入します。)

  • 次に、Ctrl+ Vを使用して行を貼り付けます。


1
コピーアンドペーストの手順を追った非常に優れた手順。しかし、OPは...ラインを複製する方法を探しています
ᴍᴀᴛᴛʙᴀᴋᴇʀ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.