在Visual Studio中是否有重复行命令的快捷方式 2008中?
一些类似的例子:
- 在Notepad ++中,我可以使用以下命令复制当前行:Ctrl +D
- 在EditPlus中:Ctrl +J
- 在NetBeans中:Ctrl+ Shift+↓ /↑
- 在Eclipse中,Ctrl+ Alt+↓ /↑
- 在Vi / Vim中,yyp
- 等等
在Visual Studio中是否有重复行命令的快捷方式 2008中?
一些类似的例子:
Answers:
Ctrl + D
Ctrl + D
(编辑)此功能现在已在VS2017中内置:Ctrl+ E,V如果未选择任何内容,则复制一行,或复制所选内容。您可以将其分配给其他组合键,或在菜单中找到它:
有关更多信息,请参见此参考。
作为@cand提到的,你可以做Ctrl+ C; Ctrl+ V。
CtrlC如果未选择任何内容,则+ 将复制该行。
如果您想实施一个更完整的解决方案,或者创建一个更简单的键盘快捷键,或者不想影响剪贴板,请参阅以下指南:
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),然后将代码复制粘贴到新模块中。现在,只需为其分配键盘快捷键:
- 转到工具->选项...
- 在环境下,单击键盘
- 在“显示包含的命令”文本框中,输入“重复”(根据您给模块指定的名称)。
- 您现在应该在下面的列表中看到该宏
- 从“使用新的快捷方式”列表中选择“文本编辑器”
- 在“按快捷键”文本框中设置焦点,然后按您希望使用的键盘上的组合键(在我的情况下为Ctrl+ Shift+ D)
- 点击“分配”按钮
- 您现在应该在“所选命令的快捷方式”文本框中看到快捷方式
- 点击确定按钮
就是这样。请享用!
<div>Profile.UserName: <%=Profile.UserName %></div>
-使用宏复制这条线之后,就变成:<div>Profile.UserName: <%=Profile.UserName %></div> %></div>
。如您所见,最后一部分是“重复的”。如果其中没有服务器端代码块,则工作正常。您知道解决方法吗?顺便说一句,我经历的另一件有趣的事情是该宏相对“慢”,这没想到... :)
您可以在此处下载免费的扩展程序,使您无需替换剪贴板内容即可复制行。
默认情况下,其绑定为Alt+ D,但是您可以通过转到工具->选项->环境->键盘将其更改为所需的任何内容。在搜索框中键入“ Duplicate”,然后查找“ Edit.DuplicateSelection”,然后将快捷方式编辑为所需的任何内容。我希望Ctrl+ D与其他编辑者保持一致。
Edit.DuplicateSelection
在VSE 2013中似乎不存在。或其他任何具有术语重复的事实。
很简单Ctrl+ C; Ctrl+ V,检查此 链接。只要您不选择任何文本,就可以按Ctrl+ 来复制光标所在的行C。
Ctrl+ D在Res2012中为我在VS2012中为我工作。这是Resharper的热键。
这是基于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+ ALT+ UP或CTRL+ UP+ 复制的eclipse样式行(或块)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
为什么要花这么长的时间来完成如此简单的事情?从Microsoft下载并安装扩展程序不到一分钟。该页面说默认情况下它将绑定到ALT+ D,但对我来说它将绑定到CTRL+D在Visual Studio Community 2015中自动,而无需进行任何更改。
我不知道Visual Studio 2008中是否存在此功能,但在Visual Studio 2010+中,您可以通过以下方式轻松实现:
不要选择任何内容,然后按Ctrl+ C,然后(不做其他任何事情)Ctrl+V
我一直在使用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
...
<configuration>
<runtime>
<AllowDComReflection enabled="true"/>
...
您必须以管理员权限运行文本编辑器,否则它将无法正常运行!希望这可以帮助突然从其下方拉出宏功能的其他任何人。
适用于Visual Studio 2012、2013、2015、2017的链接并下载扩展
https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
现在进入“工具”>“选项”>“键盘”,然后在搜索框中键入“ Duplicate”(完整的命令字符串为“ Edit.DuplicateSelection”)。在这里,您可以将其绑定到任何快捷方式,就像对其他任何命令一样。
在Visual Studio 2008中,您可以使用CTRL+ C+V
Ctrl+ D是VS 2017 v15.6中引入的新快捷方式,似乎可以实现Ctrl+ 的确切功能E,V
Ctrl + D将复制光标所在的行,并将其插入焦点所在的行的正下方。如果要复制一组特定的代码,只需在调用重复代码命令之前选择要复制的部分代码即可。
不会影响您的剪贴板
http://www.jetbrains.com/resharper/
我的故事:开始在一家新公司工作,以前从未使用过Visual Studio。第一件事-如何复制行。设置宏后,ReSharper告诉我:您要替换我的快捷方式是:“重复文本” :)
VS 2017其Ctrl
+ D
或Ctrl
+ C
; Ctrl
+ V
他们俩都为我工作。
我使用应用程序链接:AutoHotkey,以下代码保存在CommentDuplikateSaveClipboard.ahk
文件中。您可以轻松编辑/删除快捷方式。
我有链接到本文件"Shortcut to CommentDuplikateSaveClipboard.ahk"
中Autostart
的窗口。
该脚本保护您的剪贴板。
如果您更好奇,可以在此/启用脚本中添加快捷方式。
我有时用令人印象深刻的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
没有答案,只是一个有用的补充:作为一个免费赠品,我刚刚发明了(嗯……嗯……调整了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
对于Visual Studio 2010,请尝试使用以下命令进行快速的行复制(使用剪贴板):
单击要复制的行。 Ctrl+ C将复制该行。
然后按Ctrl+ Shift+Enter在插入点下方插入空白
(或者使用Ctrl+ Enter在插入点上方插入空白行。)
然后只需使用Ctrl+ V粘贴该行。