Visual Studio:快捷键:重复行

时间:2010-02-17 07:35:04

标签: visual-studio visual-studio-2008 keyboard-shortcuts

Visual Studio 2008中是否有 重复行 命令的快捷方式?

一些类似的例子:

  • Notepad++ 中,我可以复制当前行: Ctrl + D < / LI>
  • EditPlus Ctrl + J
  • NetBeans Ctrl + Shift + /
  • Eclipse Ctrl + Alt + /
  • Vi/Vim yy p

31 个答案:

答案 0 :(得分:344)

在Visual Studio 2017中

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

Duplicate line in VS2017

有关详细信息,请参阅this reference

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

正如@cand所提到的,你可以做 Ctrl + C ; Ctrl + V

如果没有选择任何内容,

Ctrl + C 将复制该行。

宏观解决方案(VS2017之前版)

如果您想要实现更完整的解决方案,也许是为了创建更简单的键盘快捷键,或者您不想影响剪贴板,请参阅本指南:

Duplicate line command for 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. 转到工具 - &gt;选项...
  2.   
  3. 在“环境”下,单击“键盘”
  4.   
  5. 在“显示包含命令”文本框中,输入“duplicate”(这取决于您为模块提供的名称。)
  6.   
  7. 您现在应该看到下面列表中的宏
  8.   
  9. 从“使用新快捷方式”列表
  10. 中选择“文本编辑器”   
  11. 将焦点设置在“按快捷键”文本框中,然后点击键盘上的组合( Ctrl + Shift + D < / kbd> in   我的情况)
  12.   
  13. 点击“分配”按钮
  14.   
  15. 您现在应该可以在“所选命令的快捷方式”文本框
  16. 中看到该快捷方式   
  17. 点击“确定”按钮
  18.         

    就是这样。享受!

答案 1 :(得分:126)

您可以下载免费扩展程序here,可以在不替换剪贴板内容的情况下复制行。

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

答案 2 :(得分:87)

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

答案 3 :(得分:70)

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

答案 4 :(得分:30)

Ctrl + D 在VS2012中使用Resharper为我工作。这是Resharper的热门关键。

答案 5 :(得分:26)

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

答案 6 :(得分:20)

这是一个基于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

答案 7 :(得分:10)

如果您喜欢使用 CTRL + ALT + UP CTRL 复制eclipse样式行(或块) + 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

答案 8 :(得分:9)

为什么要这么多长期的方法来完成如此简单的事情?从Microsoft下载并安装扩展程序只需不到一分钟。该页面表示它默认将它绑定到 ALT + D ,但对我来说它将它绑定到 CTRL + D < / kbd>在Visual Studio社区2015中自动进行,无需任何更改。

Here's the link to download the extension from Microsoft.com.

答案 9 :(得分:8)

visual studio代码 WebMatrix )中:

复制线路: Shift + Alt + down

复制排队: Shift + Alt + up

删除行: Ctrl + Shift + k

答案 10 :(得分:7)

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

答案 11 :(得分:7)

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

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

答案 12 :(得分:5)

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

不要选择任何内容,然后按 Ctrl + C 然后(不做任何其他操作) Ctrl + V < / KBD>

答案 13 :(得分:4)

我一直在使用Wael发布的宏:Duplicate line command for Visual Studio,但它在一周前停止工作,我假设是因为Windows更新。 我是对的,截至2014年2月,Macros已经在VS2010中被禁用(显然是2008年)。

要解决此问题,您必须卸载安全更新,或者在配置文件中添加一行代码,如图here所示。

在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

必须使用管理员权限运行您的文本编辑器,否则它将无效!希望这有助于突然将其宏功能从其下方拉出的其他任何人。

答案 14 :(得分:3)

只需将鼠标放在要复制的行上,然后执行 CTRL + C ,然后 CTRL + V 在同一条线上。 像魔术一样工作: - )

答案 15 :(得分:3)

在visual studio 2008中,您可以使用 CTRL + C + V

答案 16 :(得分:2)

在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

答案 17 :(得分:2)

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

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

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

答案 18 :(得分:2)

对于那些仍然在2008年后的Visual Studio上查看此问题的人,添加了一个真正的Edit.Duplicate:

  • CTRL + E V
  • CTRL + D (VS 2017 15.6 +)

答案 19 :(得分:1)

VS 2017 Ctrl + DCtrl + C; Ctrl + V 他们都为我工作。

答案 20 :(得分:1)

对于Visual Studio 2019

编辑菜单键盘快捷键,其中包括: ctrl + k ctrl + s

将“向下复制行”( Shift + Alt + DownArrow )编辑为您自己的快捷方式。

您可以找到它,使用命令ID: editor.action.copyLinesDownAction

对我来说,是 ctrl + d

答案 21 :(得分:1)

您想要的命令是 Edit.Duplicate 。它映射到 Ctrl E Ctrl V 不会覆盖您的剪贴板。

答案 22 :(得分:1)

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

我的故事:开始在一家新公司工作,之前从未使用过Visual Studio。首先要做的事情之一 - 如何复制线条。设置宏后 ReSharper 告诉我:你想用我的快捷方式替换:“重复文本”:)

答案 23 :(得分:1)

在Visual Studio 2010中,使用 CTRL + INSERT 复制光标所在的整行,然后可以使用 Ctrl + V SHIFT + INSERT 将其粘贴。

答案 24 :(得分:1)

我使用应用程序链接:AutoHotkey,下面的代码保存在CommentDuplikateSaveClipboard.ahk文件中。您可以轻松编辑/删除快捷方式。
我在Windows中的"Shortcut to CommentDuplikateSaveClipboard.ahk"链接到此文件Autostart
此脚本保护您的剪贴板。
如果您更好奇,可以在thisable / enable脚本中添加快捷方式。我有时使用非常令人印象深刻的Multi Clipboard脚本来轻松处理保存在磁盘上的许多clips并使用 CTRL + C ,< kbd> 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

答案 25 :(得分:0)

不是答案,只是一个有用的补充: 作为一个免费赠品,我刚刚发明了(嗯...嗯...调整了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

答案 26 :(得分:0)

Ctrl + D 是VS 2017 v15.6中引入的新快捷方式,似乎可以实现 Ctrl + E , V

  

Ctrl + D将复制光标所在的行,并将其插入焦点所在的行的正下方。如果要复制一组特定的代码,只需在调用重复代码命令之前选择要复制的部分代码即可。

这不会影响您的剪贴板

Source

答案 27 :(得分:0)

VS2019VS2017中,您可以选择工具->选项->键盘,还可以在方案下拉列表中选择 Resharper(Visual Studio) 选项,您将获得一个映射,就像您正在使用Resharper一样,在这种情况下为 Ctrl + D 将完成复制行的技巧。无论如何,基于documentation,这应该在 Visual Studio 2017 15.8版 或更高版本中是不可能的

答案 28 :(得分:0)

Visual Studio代码:2020年5月(1.46版) Shift + UpArrow / DownArrow:复制代码行

答案 29 :(得分:0)

如果您有 macos 版本,cmd+shift+D 可以为您完成工作

答案 30 :(得分:-3)

对于visual studio 2010,请尝试使用这些命令进行快速重复(使用剪贴板):

  • 单击要复制的行。 Ctrl + C 将复制该行。

  • 然后按 Ctrl + Shift + Enter 在插入点下方插入空白

    (或者使用 Ctrl + 输入在插入点上方插入一个空行。)

  • 然后只需使用 Ctrl + V 粘贴该行。