在Visual Studio 2008中有复制行命令的快捷方式吗?

一些类似的例子:

在notepad++中,我可以用Ctrl+D复制当前行 在EditPlus中按Ctrl+J 在NetBeans中:Ctrl+Shift+↓/↑ 在Eclipse中,按Ctrl+Alt+↓/↑ Vi/Vim, yyp 等。


当前回答

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

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

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

其他回答

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

Ctrl + C + V适用于我在VS2012没有扩展。

为什么要用这么长的方法来完成这么简单的事情?它需要不到一分钟的时间从微软下载和安装扩展。该页面说它将默认绑定到ALT+D,但对我来说,它在Visual Studio Community 2015中自动绑定到CTRL+D,没有任何更改。

这里是从Microsoft.com下载扩展的链接。

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

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