在Visual Studio 2008中有复制行命令的快捷方式吗?
一些类似的例子:
在notepad++中,我可以用Ctrl+D复制当前行 在EditPlus中按Ctrl+J 在NetBeans中:Ctrl+Shift+↓/↑ 在Eclipse中,按Ctrl+Alt+↓/↑ Vi/Vim, yyp 等。
在Visual Studio 2008中有复制行命令的快捷方式吗?
一些类似的例子:
在notepad++中,我可以用Ctrl+D复制当前行 在EditPlus中按Ctrl+J 在NetBeans中:Ctrl+Shift+↓/↑ 在Eclipse中,按Ctrl+Alt+↓/↑ Vi/Vim, yyp 等。
在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复制一行,如果没有选择,或重复选择。你可以将它分配给不同的键组合,或者在菜单中找到它:
有关更多信息,请参阅此参考资料。
Pre VS2017,内置方法使用剪贴板
正如@cand提到的,你可以按Ctrl + C;Ctrl + V。
如果没有选择,Ctrl + C将复制该行。
宏观解决方案(VS2017前期)
如果你想实现一个更完整的解决方案,也许是创建一个更简单的键盘快捷键,或者你不想影响剪贴板,请参阅以下指南:
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 To create the macro, just go to the macro explorer ("Tools->Macros->Macro Explorer" or Alt+F8) and copy paste the code in a new module. Now just assign a keyboard shortcut to it: go to Tools->Options... under Environment, click Keyboard in the "Show Commands Containing" textbox, enter "duplicate" (this according to the name you gave the module.) you should now see the macro in the list below choose "Text Editor" from the "Use new shortcut in" list set focus in the "Press shortcut keys" textbox and hit the combination on the keyboard you wish to use for it (Ctrl+Shift+D in my case) hit the "Assign" button you should now see the shortcut in the "Shortcuts for selected command" textbox hit the OK button And that's it. Enjoy!
如果你喜欢使用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
不是答案,只是一个有用的补充: 作为免费赠品,我刚刚发明了(嗯……记得不能用调整由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
下面是一个基于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 2010,尝试使用这些命令来快速复制行(使用剪贴板):
单击要复制的行。 Ctrl + C将复制这一行。 然后按Ctrl + Shift + Enter在插入点下方插入空白 (或者使用Ctrl + Enter在插入点上方插入空行。) 然后简单地使用Ctrl + V粘贴行。
http://www.jetbrains.com/resharper/
我的故事:开始在一家新公司工作,以前从未使用过Visual Studio。第一件事之一,如何复制线条。设置宏后ReSharper告诉我:你想取代我的快捷方式是:“复制文本”:)
虽然我意识到这不是一个键盘快捷键,但我想我应该添加这个,因为它不需要使用剪贴板,可能会帮助到一些人。
突出显示要复制的行。 按控制,鼠标单击突出显示的文本,并拖动到您想要去的地方。它将复制突出显示的文本。
我不知道这是否存在于Visual Studio 2008,但在Visual Studio 2010+你可以很容易地做到这一点:
不要选择任何东西,然后按Ctrl + C,然后(不做任何其他事情)按Ctrl + V
有一个免费的扩展,你可以下载这里,让你复制行无需替换剪贴板的内容。
默认情况下,它被绑定到Alt + D,但你可以通过点击工具->选项->环境->键盘将其更改为任何你想要的。在搜索框中输入“复制”,然后查找“编辑”。DuplicateSelection”,并编辑快捷方式为任何你想要的。我更喜欢Ctrl + D与其他编辑器保持一致。
我一直在使用Wael发布的宏:Visual Studio的重复行命令,但它一周前就停止工作了,我猜是因为Windows更新。 我是正确的,在2014年2月,宏在VS2010(和2008显然)已经被禁用。
要解决这个问题,您要么必须卸载安全更新,要么向配置文件中添加一行代码,如下所示。
在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 ... < >配置 运行时> < < AllowDComReflection启用= " true " / > ...
你必须运行你的文本编辑器与管理权限,否则它不会工作!希望这能帮助那些突然有宏功能的人。
I use application link:AutoHotkey with below code saved in CommentDuplikateSaveClipboard.ahk file. You can edit/remove shortcuts it is easy. I have link to this file "Shortcut to CommentDuplikateSaveClipboard.ahk" in Autostart in windows. This script protect your clipboard. If you are more curious you would add shortcuts to thisable/enable script. I sometimes use very impressive Multi Clipboard script to easy handle with many clips saved on disk and use with CTRL+C,X,V to copy,paste,cut,next,previous,delete this,delete all.
;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
由于我不能在我的Visual Studio 2013中使用宏,我找到了一个Visual Studio插件(我在2012年和2013年使用它)。 重复选择重复选择和整行-他们只需要部分选择。标准快捷键是ALT + D。
在visual studio代码(WebMatrix)中:
向下复制行:Shift + Alt +向下
复制线:Shift + Alt +向上
删除行:Ctrl + Shift + k
为什么要用这么长的方法来完成这么简单的事情?它需要不到一分钟的时间从微软下载和安装扩展。该页面说它将默认绑定到ALT+D,但对我来说,它在Visual Studio Community 2015中自动绑定到CTRL+D,没有任何更改。
这里是从Microsoft.com下载扩展的链接。
对于那些在2008年之后还在Visual Studio上查看这个问题的人,一个真正的编辑。副本已添加:
CTRL + E, V Ctrl + d (vs 2017 15.6+)
针对Visual Studio 2012、2013、2015、2017,点击链接下载扩展
https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
现在进入工具>选项>键盘,在搜索框中输入“复制”(完整的命令字符串是“Edit.DuplicateSelection”)。在这里,您可以以与其他命令相同的方式将其绑定到任何快捷方式。
Ctrl + D是VS 2017 v15.6中引入的一个新快捷键,它的作用似乎和Ctrl + E, V完全一样
Ctrl + D将复制光标所在的行,并将其插入到焦点行的正下方。如果希望复制一组特定的代码,只需在调用duplicate code命令之前选择要复制的代码部分。
它不会影响你的剪贴板
源
在Visual studio 2017或其他版本不需要宏或扩展,
进入“工具>选项>环境>键盘” 在显示命令下包含:写编辑。重复的 将光标置于“按快捷键:”,按“Ctrl + D”,单击“分配”按钮 单击OK保存新的键盘快捷方式
在VS2019和VS2017中,你可以选择工具->选项->键盘,你可以在方案下拉Resharper (Visual Studio)选项中选择,你会得到一个映射,如果你使用Resharper,在这种情况下,Ctrl + D将完成复制线条的技巧。无论如何,根据文档,这应该在Visual Studio 2017 Version 15.8或更高版本中推出
对于Visual Studio Code 2019:
使用ctrl+k和ctrl+s编辑菜单键盘快捷键
编辑“向下复制一行”(Shift + Alt + DownArrow)到你自己的快捷方式。
您可以通过命令ID: editor.action.copyLinesDownAction找到它
对我来说,ctrl+d