web-dev-qa-db-ja.com

ビジネススタジオ:ショートカットキー:二重線

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

いくつかの同様の例:

377
Posto

Visual Studio 2017の場合

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

Duplicate line in VS2017

詳しくは この参照 を参照してください。

クリップボードを使用した組み込み方法Pre VS2017

@candが述べたように、あなたはただできる Ctrl + C ; Ctrl + V

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

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

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

Visual Studio用の行コマンドの重複

ビジュアルベーシック:

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. [Show Commands Containing]テキストボックスに、「duplicate」と入力します(これは、モジュールに付けた名前に従います)。
  4. あなたは今下のリストのマクロを見るべきです
  5. [新しいショートカットを使用]リストから[テキストエディタ]を選択します。
  6. [ショートカットキーを押す]テキストボックスにフォーカスを置き、使用したいキーボードで組み合わせをクリックします(Ctrl+Shift+D 私の場合)
  7. 「割り当て」ボタンを押す
  8. 「選択したコマンドのショートカット」テキストボックスにショートカットが表示されます。
  9. oKボタンを押す

以上です。楽しい!

345
Wael Dalloul

あなたがダウンロードできる無料の拡張子があります ここ これはあなたがクリップボードの内容を置き換えることなく行を複製することを可能にします。

デフォルトでは Alt + Dしかし、[ツール] - > [オプション] - > [環境] - > [キーボード]を選択して、必要なものに変更できます。検索ボックスに「Duplicate」と入力して「Edit.DuplicateSelection」を探し、ショートカットを編集します。私は好きです Ctrl + D 他の編集者と一貫性を保つために。

127
Ben

それは簡単です Ctrl + C ; Ctrl + V 、これをチェックしてください link 。テキストを選択しない限り、これを押すとカーソルがある行が複製されます。 Ctrl+C

88
cand

Ctrl + C + V 拡張子なしでVS2012で私のために働きます。

71
nGoline

Ctrl + D VS2012で私のためにResharperと一緒に働いています。それはResharperのホットキーです。

30
sawe

Visual Studio 2013ではあなたが使用することができます Ctrl+C+V

27
Vazgen Torosyan

これは、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
21
Mark Foreman

Eclipseスタイルのライン(またはブロック)の複製が好きなら CTRL+ALT+UP または CTRL+UP+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
11
Krzysztof

どうしてこんなに単純なことを成し遂げるために、そんなに長い間メソッドを引き出すのでしょうか。 Microsoftから拡張機能をダウンロードしてインストールするのに1分もかかりません。ページはそれをにバインドすると言っています ALT+D デフォルトでは、私にとってはそれをにバインド CTRL+D Visual Studio Community 2015では自動的に変更されません。

これは、Microsoft.comから拡張機能をダウンロードするためのリンクです。

10
Daniel

ビジュアルスタジオコードWebMatrix):

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

行をコピーする: Shift + Alt + up

行を削除します。 Ctrl + Shift + k

8
mghhgm

これはキーボードショートカットではありませんが、クリップボードを使用する必要がなく、一部の人に役立つ可能性があるため、これを追加することにしました。

複製したい行を強調表示します。 Ctrlキーを押しながらハイライト表示されたテキストをマウスクリックして、目的の場所にドラッグします。強調表示されたテキストを複製します。

7
Warty

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

7
Lebewesen

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

何も選択しないでください。 Ctrl + C そして(他に何もしないで) Ctrl + V

5
Alireza Noori

私は、Waelが投稿したマクロを使ってきました: Visual Studio用の重複行コマンド が動作しなくなりました一週間前、私は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"/>
            ...
    

    editor screenshot

あなたは_あなたのテキストエディタを管理者権限で実行しなければなりません。うまくいけば、これはマクロ機能を突然それらの下から引き出す他の誰かに役立つ。

4
MasterHD

ビジュアルスタジオ2008ではあなたが使用することができます CTRL + C + V

3
user5460893

コピーして実行する行にマウスを置くだけです。 CTRL+C 、その後 CTRL+V 同じ行に。魔法のように動作します:-)

3

Visual Studio 2017と他のバージョンではマクロや拡張は必要ありません

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

enter image description here

2
ewwink

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

  • CTRL+E、 V
  • CTRL+D (VS 2017 15.6以降)
2
icanfathom

Visual Studio 2012、2013、2015、2017の場合はリンクをたどり、拡張子をダウンロードしてください

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

それでは、Tools> Options> Keyboardの順に進み、検索ボックスに "Duplicate"と入力する(完全なコマンド文字列は "Edit.DuplicateSelection"である)。ここでは、他のコマンドの場合と同じ方法で、それを任意のショートカットにバインドできます。

2

あなたが望むコマンドはEdit.Duplicateです。それはにマップされます CtrlE、 CtrlV。これはクリップボードを上書きしません

1
HaveSpacesuit

Visual Studio 2010では、カーソルがある行全体をコピーします。 CTRL + INSERT それからあなたは使うことができます Ctrl + V または SHIFT + INSERT 貼り付ける.

1
Crackerjack

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

私の話:新しい会社で働き始めました。以前はVisual Studioを使ったことがありませんでした。最初のものの一つ - 行を複製する方法。マクロを設定した後、ReSharperが私に言った。

1
Michal Stefanow

VS 2017の場合はCtrl + DまたはCtrl + CCtrl + V彼らは両方とも私のために働きます。

アプリケーションリンクを使用します。 AutoHotkey 以下のコードをCommentDuplikateSaveClipboard.ahkファイルに保存します。ショートカットの編集/削除は簡単です。
WindowsのAutostartにあるこのファイル"Shortcut to CommentDuplikateSaveClipboard.ahk"にリンクしています。
このスクリプトはあなたのクリップボードを保護します。
もっと興味があれば、thisable/enableスクリプトにショートカットを追加してください。
私は、ディスクに保存されている多くのclipsを簡単に処理するために、非常に印象的なMulti Clipboardスクリプトを使用することがあります。 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
1
MrHIDEn

Ctrl + D これは、VS 2017 v15.6で導入された新しいショートカットです。 Ctrl + E、 V

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

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

出典

0
Kautsky Lozano

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

0
ddieppa

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

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