首页 文章

Visual Studio:快捷键:重复行

提问于
浏览
342

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

一些类似的例子:

  • Notepad++ 中,我可以复制当前行:Ctrl D.

  • in EditPlus :Ctrl J

  • in NetBeans :Ctrl Shift↓/↑

  • in Eclipse ,Ctrl Alt↓/↑

  • in Vi/Vim ,yyp

27 回答

  • 26

    在visual studio代码( WebMatrix )中:

    向下复制线:向下移动Alt

    复制排队:向上移动Alt

    删除行:Ctrl Shift k

  • -2

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

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

  • 119

    在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:导入系统
    进口EnvDTE
    进口EnvDTE80
    导入System.Diagnostics

    公共模块DuplicateLastLineModule
    Sub DuplicateLine()
    Dim line As String
    DTE.ActiveDocument.Selection.StartOfLine(0)
    DTE.ActiveDocument.Selection.EndOfLine(真)
    line = DTE.ActiveDocument.Selection.Text
    DTE.ActiveDocument.Selection.EndOfLine()
    DTE.ActiveDocument.Selection.NewLine()
    DTE.ActiveDocument.Selection.StartOfLine(0)
    DTE.ActiveDocument.Selection.Text = line
    结束子
    结束模块
    要创建宏,只需转到宏浏览器(“工具 - >宏 - >宏浏览器”或Alt F8)并将代码复制粘贴到新模块中 . 现在只需为它指定一个键盘快捷键:转到工具 - >选项...在环境下,单击“显示包含命令”文本框中的键盘,输入“复制”(这取决于您给模块的名称 . )你应该现在看下面列表中的宏从“使用新快捷方式”列表中选择“文本编辑器”列表设置焦点在“按快捷键”文本框中,然后点击键盘上的组合,你可以使用它(Ctrl Shift D in我的情况下)点击“分配”按钮,您现在应该看到“所选命令的快捷方式”文本框中的快捷方式点击确定按钮就是这样 . 请享用!

  • 7

    有一个免费的扩展,您可以下载here,它可以让您复制行而不替换剪贴板内容 .

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

  • 1

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

  • 4

    Ctrl C V适用于VS2012,没有扩展名 .

  • 71

    Ctrl D在VS2012中使用Resharper为我工作 . 它's Resharper'的热键 .

  • 7

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

  • 1

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

    如果你喜欢使用CTRL ALT UP或CTRL UP DOWN复制eclipse样式行(或块),下面我为此目的发布宏:

    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
    
  • 0

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

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

  • 1

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

  • 85

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

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

  • 30

    我一直在使用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

    MUSTadmin rights 运行你的文本编辑器,否则它将无效!希望这有助于突然将其宏功能从其下方拉出的其他任何人 .

  • 9

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

  • 7

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

  • 3

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

    My story: 开始在一家新公司工作,之前从未使用过Visual Studio . 首先要做的事情之一 - 如何复制线条 . 设置宏后 ReSharper 告诉我:你想用我的快捷方式代替:"duplicate text" :)

  • 2

    在Visual Studio 2010中,使用CTRL INSERT复制光标所在的整行,然后可以使用Ctrl V或SHIFT INSERT粘贴它 .

  • 1

    VS 2017其 Ctrl DCtrl C ; Ctrl V 他们都为我工作 .

  • 1

    你想要的命令是 Edit.Duplicate . 它映射到CtrlE,CtrlV . 这 will not 覆盖你的剪贴板 .

  • 1

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

    • CTRL E,V

    • CTRL D(VS 2017 15.6)

  • 5

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

    在Visual Studio 2017和其他版本 No need Macro or Extension 中,

    • 转到 Tools > Options > Environment > Keyboards

    • Show commands containing: 下写 Edit.Duplicate

    • 将光标置于 Press shortcut keys: 并按Ctrl D并单击 Assign 按钮

    • 单击 OK 以保存新的键盘快捷键

    enter image description here

  • 299

    for Visual Studio 2012, 2013, 2015, 2017 点击链接并下载扩展程序

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

    现在进入工具>选项>键盘,在搜索框中键入“Duplicate”(完整的命令字符串为“Edit.DuplicateSelection”) . 在这里,您可以使用与任何其他命令相同的方式将其绑定到任何快捷方式 .

  • 20

    Ctrl D是VS 2017 v15.6中引入的一个新快捷方式,它似乎与Ctrl E,V完全相同

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

    它不会影响您的剪贴板

    Source

  • 10

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

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

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

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

    (或者使用Ctrl Enter在插入点上方插入一个空行 . )

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

相关问题