Visual Studio:快捷键:重复行

Pos*_*sto 399 keyboard-shortcuts visual-studio-2008 visual-studio

Visual Studio 2008中是否有Duplicate Line命令的快捷方式?

一些类似的例子:

Wae*_*oul 376

在Visual Studio 2017中

(编辑)此功能现在内置于VS2017中:Ctrl+ E,V如果未选择任何内容,则复制一行,或重复选择.您可以将其分配给不同的组合键,或在菜单中找到它:

VS2017中的重复行

有关更多信息,请参阅此参考.

Pre VS2017,内置方法使用剪贴板

正如@cand所说,你可以做Ctrl+ C; Ctrl+ V.

CtrlC如果没有选择任何内容,+ 将复制该行.

宏观解决方案(前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
Run Code Online (Sandbox Code Playgroud)

要创建宏,只需转到宏浏览器("工具 - >宏 - >宏浏览器"或Alt+ F8)并将代码复制粘贴到新模块中.现在只需为其指定一个键盘快捷键:

  1. 转到工具 - >选项...
  2. 在环境下,单击键盘
  3. 在"显示包含命令"文本框中,输入"duplicate"(根据您为模块指定的名称).
  4. 你现在应该看到下面列表中的宏
  5. 从"使用新快捷方式"列表中选择"文本编辑器"
  6. 将焦点设置在"按快捷键"文本框中,然后点击键盘上的组合,你可以使用它(在我的情况下为Ctrl+ Shift+ D)
  7. 点击"分配"按钮
  8. 您现在应该在"所选命令的快捷方式"文本框中看到快捷方式
  9. 点击OK按钮

就是这样.请享用!

  • 2014年2月之后,出于安全原因禁用了宏.向下滚动并查看MasterHD对解决方法的回答,以便让Wael的方法在安全更新后继续工作. (6认同)
  • 我发现Ctrl C + Ctrl V在我已经将某些东西复制到剪贴板上的情况下是限制性的,并且想要在粘贴之前复制一行. (4认同)
  • 我只是尝试过它,有趣的是,当有一个带有短标签的"服务器端代码块"时,它会重复一些额外的字符,如下所示:`<div> Profile.UserName:<%= Profile.UserName%> </ div>` - 使用此宏复制此行后,它变为以下内容:`<div> Profile.UserName:<%= Profile.UserName%> </ div>%> </ div>`.如您所见,最后一部分是"重复".当其中没有服务器端代码块时,它可以正常工作.你知道一个解决方法吗?顺便说一下,我经历的另一个有趣的事情是这个宏相对"慢",我没想到...... :) (3认同)
  • 到底为什么实现重复操作或键绑定“如此困难”,而大多数其他编辑器都非常高效和直观地做到了这一点。:/ (3认同)

Ben*_*Ben 131

你可以在这里下载一个免费的扩展程序,让你不更换剪贴板内容的情况下复制行.

默认情况下,它绑定到Alt+ D,但您可以通过转到工具 - >选项 - >环境 - >键盘将其更改为您想要的任何内容.在搜索框中键入"Duplicate",然后查找"Edit.DuplicateSelection"并编辑所需的快捷方式.我更喜欢Ctrl+ D与其他编辑保持一致.

  • 这是你正在寻找的真正答案,这里发布的所有其他内容都很聪明,但不是所要求的. (23认同)
  • `Edit.DuplicateSelection`似乎不存在于VSE 2013中.或者其他任何与术语_duplicate_相关的事实. (7认同)
  • 马修,您必须单击此处链接并安装扩展程序.那么你必须关闭视觉工作室并重新打开它.然后你必须去工具==>选项==>环境==>键盘然后你必须输入Duplicate,你会看到它.然后你可以按F4,这样就像QEDIT或任何你想要的那样,生活会很好. (2认同)

can*_*and 92

这很简单Ctrl+ C; Ctrl+ V,检查此 链接.只要您不选择任何文本,当您按Ctrl+ 时,这将复制光标所在的行C.

  • 在很多情况下,您不希望通过剪贴板,例如,如果您想要复制一条线,然后用剪贴板中的某些内容替换其中的某些内容. (157认同)
  • 我很确定OP知道单独的复制和粘贴命令...... (12认同)
  • 当然,但问题是要求快捷方式,而不是文本编辑的一般解决方案,所以我认为出于简单的目的,这已经足够了(至少在我的情况下). (7认同)
  • 谢谢,但我期待在Edit Plus中使用Ctrl + j或在Notepad ++中使用Crtl + D ......在VS2008或VS2010中是否有任何内容 (4认同)
  • 我只发现了这个.然而它并没有那么糟糕 - 当然更容易使用ctrl + D,但是如果你想在100个副本中复制1行你可以使用ctrl + c(不需要选择任何东西,只需将命令提示符放在想要的行上) )+ 100次ctrl + v.它只有一组击键而不是ctrl + d解决方案.如果您想要进行更复杂的复制,则可能会出现更多问题. (2认同)

小智 73

Ctrl+ C+ V在VS2012上为我工作,没有扩展名.

  • 需要没有剪贴板覆盖的解决方案 (7认同)
  • 是!谢谢! (2认同)

saw*_*awe 32

Ctrl+ D在VS2012中使用Resharper为我工作.这是Resharper的热门钥匙.

  • 没有它没有,只是意识到发布后,但它是一个Resharper的捷径.如果安装了resharper,那么这可能有所帮助. (11认同)

Vaz*_*yan 27

在Visual Studio 2013中,您可以使用Ctrl+ C+V

  • 需要解决方案而不覆盖剪贴板 (4认同)
  • 很高兴我漫步下来。这就是我想要的。 (2认同)
  • 如果不覆盖剪贴板会很棒 (2认同)

Mar*_*man 23

这是一个基于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
Run Code Online (Sandbox Code Playgroud)

  • 从接受的答案中得到了很大改善!(用于VS2010) (2认同)

Krz*_*tof 11

如果你喜欢使用CTRL+ ALT+ UPCTRL+ 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
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 10

为什么如此多的长期方法来完成如此简单的事情呢?从Microsoft下载并安装扩展程序只需不到一分钟.该页面表示它默认将它绑定到ALT+ D,但对我来说,它在Visual Studio Community 2015中自动绑定到CTRL+ D而没有任何更改.

这是从Microsoft.com下载扩展程序的链接.


eww*_*ink 10

在 Visual Studio 2017 和其他版本中不需要宏或扩展

  1. Tools > Options > Environment > Keyboards
  2. Show commands containing:Edit.Duplicate
  3. 将光标置于Press shortcut keys:并按Ctrl+D并单击Assign按钮
  4. 单击OK以保存新的键盘快捷键

在此处输入图片说明


mgh*_*hgm 8

visual studio代码(WebMatrix)中:

复制行:Shift+ Alt+down

复制排队:Shift+ Alt+up

删除行:Ctrl+ Shift+k

  • 这是迄今为止最好的答案;它甚至允许您通过选择多行来复制完整的代码块(如果您愿意)。在 Visual Studio Code 1.7.2 中测试 (2认同)

War*_*rty 7

虽然我意识到这不是键盘快捷键,但我想我会添加它,因为它不需要使用剪贴板,可能会帮助一些人.

突出显示要复制的行.按控制,鼠标单击突出显示的文本,然后拖动到要转到的位置.它将复制突出显示的文本.


小智 7

由于我无法在Visual Studio 2013中使用宏,因此我找到了一个Visual Studio插件(我在2012年和2013年使用它). 重复选择重复选择和整行 - 它们只需要部分选择.标准快捷键是ALT+ D.


Ali*_*ori 5

我不知道Visual Studio 2008中是否存在这种情况,但在Visual Studio 2010+中,您可以通过以下方式轻松完成此操作:

不要选择任何东西,然后按Ctrl+ C然后(不做其他任何事情)Ctrl+V


Kal*_*aaz 5

对于Visual Studio 2012、2013、2015、2017,请点击链接并下载扩展

https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
Run Code Online (Sandbox Code Playgroud)

现在进入“工具”>“选项”>“键盘”,然后在搜索框中键入“Duplicate”(完整命令字符串为“Edit.DuplicateSelection”)。在这里,您可以将其绑定到任何快捷方式,就像绑定任何其他命令一样。