Visual Studio 2008に行の重複コマンドのショートカットはありますか?
いくつかの同様の例:
(編集)この機能は現在VS2017に組み込まれています。 Ctrl + E、 V 何も選択されていない場合は行を複製し、選択を複製します。あなたはそれを別のキーの組み合わせに割り当てることも、メニューから見つけることもできます。
詳しくは この参照 を参照してください。
@candが述べたように、あなたはただできる Ctrl + C ; Ctrl + V。
Ctrl + C 何も選択されていない場合はその行をコピーします。
もっと簡単なキーボードショートカットを作成したり、クリップボードに影響を与えたくない場合など、より完全なソリューションを実装したい場合は、次のガイドを参照してください。
ビジュアルベーシック:
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)をコピーして新しいモジュールに貼り付けます。キーボードショートカットを割り当てます。
- ツール - >オプション...に行きます。
- 環境で、キーボードをクリックします。
- [Show Commands Containing]テキストボックスに、「duplicate」と入力します(これは、モジュールに付けた名前に従います)。
- あなたは今下のリストのマクロを見るべきです
- [新しいショートカットを使用]リストから[テキストエディタ]を選択します。
- [ショートカットキーを押す]テキストボックスにフォーカスを置き、使用したいキーボードで組み合わせをクリックします(Ctrl+Shift+D 私の場合)
- 「割り当て」ボタンを押す
- 「選択したコマンドのショートカット」テキストボックスにショートカットが表示されます。
- oKボタンを押す
以上です。楽しい!
あなたがダウンロードできる無料の拡張子があります ここ これはあなたがクリップボードの内容を置き換えることなく行を複製することを可能にします。
デフォルトでは Alt + Dしかし、[ツール] - > [オプション] - > [環境] - > [キーボード]を選択して、必要なものに変更できます。検索ボックスに「Duplicate」と入力して「Edit.DuplicateSelection」を探し、ショートカットを編集します。私は好きです Ctrl + D 他の編集者と一貫性を保つために。
それは簡単です Ctrl + C ; Ctrl + V 、これをチェックしてください link 。テキストを選択しない限り、これを押すとカーソルがある行が複製されます。 Ctrl+C。
Ctrl + C + V 拡張子なしでVS2012で私のために働きます。
Ctrl + D VS2012で私のためにResharperと一緒に働いています。それはResharperのホットキーです。
Visual Studio 2013ではあなたが使用することができます Ctrl+C+V
これは、Waelによって投稿されたリンク内のマクロに基づいていますが、次の領域で改善されています。
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
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
どうしてこんなに単純なことを成し遂げるために、そんなに長い間メソッドを引き出すのでしょうか。 Microsoftから拡張機能をダウンロードしてインストールするのに1分もかかりません。ページはそれをにバインドすると言っています ALT+D デフォルトでは、私にとってはそれをにバインド CTRL+D Visual Studio Community 2015では自動的に変更されません。
ビジュアルスタジオコード(WebMatrix):
行を下にコピー: Shift + Alt + down
行をコピーする: Shift + Alt + up
行を削除します。 Ctrl + Shift + k
これはキーボードショートカットではありませんが、クリップボードを使用する必要がなく、一部の人に役立つ可能性があるため、これを追加することにしました。
複製したい行を強調表示します。 Ctrlキーを押しながらハイライト表示されたテキストをマウスクリックして、目的の場所にドラッグします。強調表示されたテキストを複製します。
Visual Studio 2013ではマクロを使用できないため、Visual Studioプラグインを見つけました(2012年と2013年に使用しています)。 選択範囲の重複 選択範囲と行全体が重複しています - 部分的に選択されている必要があります。標準のショートカットは ALT + D。
これがVisual Studio 2008に存在するかどうかはわかりませんが、Visual Studio 2010以降では、次の方法で簡単に実行できます。
何も選択しないでください。 Ctrl + C そして(他に何もしないで) Ctrl + V
私は、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"/>
...
あなたは_あなたのテキストエディタを管理者権限で実行しなければなりません。うまくいけば、これはマクロ機能を突然それらの下から引き出す他の誰かに役立つ。
ビジュアルスタジオ2008ではあなたが使用することができます CTRL + C + V
コピーして実行する行にマウスを置くだけです。 CTRL+C 、その後 CTRL+V 同じ行に。魔法のように動作します:-)
2008年以降のVisual Studioでこの質問をまだ見ている人のために、実際のEdit.Duplicateが追加されました。
Visual Studio 2012、2013、2015、2017の場合はリンクをたどり、拡張子をダウンロードしてください
https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
それでは、Tools> Options> Keyboardの順に進み、検索ボックスに "Duplicate"と入力する(完全なコマンド文字列は "Edit.DuplicateSelection"である)。ここでは、他のコマンドの場合と同じ方法で、それを任意のショートカットにバインドできます。
あなたが望むコマンドはEdit.Duplicateです。それはにマップされます CtrlE、 CtrlV。これはクリップボードを上書きしません。
Visual Studio 2010では、カーソルがある行全体をコピーします。 CTRL + INSERT それからあなたは使うことができます Ctrl + V または SHIFT + INSERT 貼り付ける.
http://www.jetbrains.com/resharper/
私の話:新しい会社で働き始めました。以前はVisual Studioを使ったことがありませんでした。最初のものの一つ - 行を複製する方法。マクロを設定した後、ReSharperが私に言った。
VS 2017の場合はCtrl
+ D
またはCtrl
+ C
。 Ctrl
+ V
彼らは両方とも私のために働きます。
アプリケーションリンクを使用します。 AutoHotkey 以下のコードをCommentDuplikateSaveClipboard.ahk
ファイルに保存します。ショートカットの編集/削除は簡単です。
WindowsのAutostart
にあるこのファイル"Shortcut to CommentDuplikateSaveClipboard.ahk"
にリンクしています。
このスクリプトはあなたのクリップボードを保護します。
もっと興味があれば、thisable/enableスクリプトにショートカットを追加してください。
私は、ディスクに保存されている多くのclips
を簡単に処理するために、非常に印象的なMulti Clipboard
スクリプトを使用することがあります。 CTRL+C、X、V コピー、貼り付け、切り取り、次へ、前へ、これを削除、すべて削除します。
;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
Ctrl + D これは、VS 2017 v15.6で導入された新しいショートカットです。 Ctrl + E、 V
Ctrl + Dを押すと、カーソルがある行が複製され、フォーカスのある行のすぐ下に挿入されます。特定のコードセットを複製する場合は、コードの複製コマンドを実行する前に、複製するコード部分を選択するだけです。
クリップボードには影響しません
VS2019 と VS2017 であなたはツール - >オプション - >キーボードそしてあなたを選ぶことができるスキームドロップダウンResharper(Visual Studio)オプションで選択できます。この場合、 Resharper を使用していた場合と同じようにマッピングされます。 Ctrl + D 行を複製するためのトリックを行います。とにかく、 ドキュメンテーション に基づいて、これはのゲートの外にあるはずですVisual Studio 2017バージョン15.8以上
答えではなく、単なる便利な追加事項:景品として、私は(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