Visual Studio 2008 中是否有 Duplicate Line 命令的快捷方式?
一些类似的例子:
在记事本++中,我可以使用以下命令复制当前行:Ctrl+D
在 EditPlus 中:Ctrl+J
在 NetBeans 中:Ctrl+Shift+↓/↑
在 Eclipse 中,Ctrl+Alt+↓/↑
在 Vi/Vim 中,是的
等等
在 Visual Studio 2022 中
Ctrl + E, V
在 Visual Studio 2019 中
Ctrl + D
在 Visual Studio 2017(v15.6 及更高版本)中
Ctrl + D
在 Visual Studio 2017(pre v15.6)中
(编辑)这个功能现在在 VS2017 中内置:Ctrl + E、V 如果没有选择任何内容,则复制一行,或者复制选择。您可以将其分配给不同的组合键,或在菜单中找到它:
https://i.stack.imgur.com/4Mfkb.png
有关详细信息,请参阅 this reference。
Pre VS2017,使用剪贴板的内置方法
正如@cand 提到的,你可以做 Ctrl + C ; Ctrl + V。
如果没有选择任何内容,Ctrl + C 将复制该行。
宏解决方案(VS2017之前)
如果您想实现更完整的解决方案,也许是为了创建更简单的键盘快捷键,或者您不想影响剪贴板,请参阅本指南:
Visual Basic:导入 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)并将代码复制粘贴到新模块中。现在只需为其分配一个键盘快捷键:转到环境下的工具->选项...,单击“显示包含的命令”文本框中的键盘,输入“重复”(根据您给模块提供的名称。)你应该现在在下面的列表中看到宏从“使用新的快捷方式”列表中选择“文本编辑器”在“按下快捷键”文本框中设置焦点并点击您希望用于它的键盘上的组合(Ctrl+Shift+ D 在我的情况下)点击“分配”按钮,您现在应该在“选定命令的快捷方式”文本框中看到快捷方式点击确定按钮,就是这样。享受!
您可以下载一个免费的扩展程序 here,它可以让您在不替换剪贴板内容的情况下复制行。
默认情况下,它绑定到 Alt + D,但您可以通过转到工具->选项->环境->键盘将其更改为您想要的任何内容。在搜索框中键入“Duplicate”并查找“Edit.DuplicateSelection”并将快捷方式编辑为您想要的任何内容。我更喜欢 Ctrl + D 与其他编辑器保持一致。
Edit.DuplicateSelection
似乎没有出现在 VSE 2013 中。或者实际上带有术语 duplicate 的任何其他内容。
很简单 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
在 Visual Studio 2017 和其他版本中不需要宏或扩展,
转到工具>选项>环境>键盘在显示命令下包含:编写Edit.Duplicate将光标放置到按快捷键:然后按Ctrl + D并单击分配按钮单击确定以保存新的键盘快捷键
https://i.stack.imgur.com/lQbln.gif
如果您喜欢使用 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
在视觉工作室代码(WebMatrix)中:
向下复制行:Shift + Alt + 向下
向上复制行:Shift + Alt + 向上
删除行:Ctrl + Shift + k
为什么有这么多冗长的方法来完成如此简单的事情?从 Microsoft 下载和安装扩展程序只需不到一分钟的时间。该页面说默认情况下它将绑定到 ALT+D,但对我来说,它在 Visual Studio Community 2015 中自动将其绑定到 CTRL+D,没有任何更改。
Here's the link to download the extension from Microsoft.com.
因为我不能在我的 Visual Studio 2013 中使用宏,所以我找到了一个 Visual Studio 插件(我在 2012 年和 2013 年使用它)。 Duplicate Selection 重复选择和整行 - 它们只需要部分选择。标准快捷键是 ALT + D。
虽然我意识到这不是键盘快捷键,但我想我会添加它,因为它不需要使用剪贴板并且可能会对某些人有所帮助。
突出显示要复制的行。按下控制,鼠标单击突出显示的文本,然后拖动到您想去的地方。它将复制突出显示的文本。
我不知道这在 Visual Studio 2008 中是否存在,但在 Visual Studio 2010+ 中,您可以通过以下方式轻松做到这一点:
不要选择任何东西,然后按 Ctrl + C 然后(不做任何其他事情) Ctrl + V
我一直在使用 Wael 发布的宏:Duplicate line command for Visual Studio,但它在一周前停止工作,我认为是因为 Windows 更新。我是对的,截至 2014 年 2 月,宏已在 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 ... <配置> <运行时>
您必须以管理员权限运行您的文本编辑器,否则它将无法工作!希望这可以帮助那些突然从他们下面拉出宏功能的人。
对于 Visual Studio 2012、2013、2015、2017,请点击链接并下载扩展
https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
现在进入工具 > 选项 > 键盘,然后在搜索框中输入“复制”(完整的命令字符串是“Edit.DuplicateSelection”)。在这里,您可以将其绑定到任何快捷方式,就像绑定任何其他命令一样。
只需将鼠标放在要复制的行上并执行 CTRL+C ,然后在同一行上执行 CTRL+V 。像魔术一样工作:-)
在 Visual Studio 2008 中,您可以使用 CTRL + C + V
对于那些仍在 Visual Studio post-2008 上查看此问题的人,添加了一个真正的 Edit.Duplicate:
CTRL+E, V
CTRL+D (VS 2017 15.6+)
对于 Visual Studio Code 2019:
编辑菜单键盘快捷键: ctrl+k 和 ctrl+s
将“向下复制行”(Shift + Alt + DownArrow)编辑为您自己的快捷方式。
您可以使用命令 ID 找到它:editor.action.copyLinesDownAction
对我来说,它是 ctrl+d
Ctrl + D 是 VS 2017 v15.6 中引入的一个新快捷方式,似乎与 Ctrl + E, V 完全相同
Ctrl + D 将复制光标所在的行并将其插入到焦点所在行的正下方。如果您想复制一组特定的代码,只需在调用复制代码命令之前选择您要复制的代码部分。
它不会影响您的剪贴板
http://www.jetbrains.com/resharper/
我的故事:开始在一家新公司工作,以前从未使用过 Visual Studio。首先要做的事情之一 - 如何复制行。设置宏后 ReSharper 告诉我:你想替换我的快捷方式吗:“重复文本”:)
在 Visual Studio 2010 中,您可以使用 CTRL + INSERT 复制光标所在的整行,然后可以使用 Ctrl + V 或 SHIFT + INSERT 进行粘贴。
VS 2017 它的 Ctrl
+ D
或 Ctrl
+ C
; Ctrl
+ V
他们都为我工作。
您想要的命令是 Edit.Duplicate。它映射到 CtrlE、CtrlV。这不会覆盖您的剪贴板。
我使用应用程序链接:AutoHotkey,并将以下代码保存在 CommentDuplikateSaveClipboard.ahk
文件中。您可以轻松地编辑/删除快捷方式。
我在 Windows 的 Autostart
中有指向此文件 "Shortcut to CommentDuplikateSaveClipboard.ahk"
的链接。
此脚本保护您的剪贴板。
如果您更好奇,您可以为 thisable/enable 脚本添加快捷方式。
我有时使用非常令人印象深刻的 Multi Clipboard
脚本来轻松处理许多保存在磁盘上的 clips
并与 CTRL+C,X kbd>,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
不是一个答案,只是一个有用的补充:作为一个免费赠品,我刚刚发明了(嗯......嗯......调整了 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
在 VS2019 和 VS2017 中,您可以选择 Tools->Options->Keyboard 并且您可以在方案下拉列表中选择 Resharper (Visual Studio) 选项,您将获得一个类似于使用 Resharper 的映射,在这种情况下 Ctrl + D 可以解决问题复制线。无论如何,基于 documentation,这在 Visual Studio 2017 版本 15.8 或更高版本中应该不会出现
如果你有 macOS 版本, cmd+shift+D 可以为你完成工作
在 Linux Mint 上,您可以这样做; Ctrl + Alt + Shift + 2 => 向上复制 Ctrl + Alt + Shift + 8 => 向下复制
<div>Profile.UserName: <%=Profile.UserName %></div>
- 使用此宏复制此行后,它变为以下内容:{ 2}。如您所见,最后一部分是“重复的”。当其中没有服务器端代码块时,它可以正常工作。你知道解决方法吗?顺便说一句,我经历的另一个有趣的事情是这个宏相对“慢”,这是我没想到的...... :)CTRL + V
粘贴一些代码。否则我必须再次重新复制其他代码部分。 ..