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而不做任何更改 .
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
27 回答
在visual studio代码( WebMatrix )中:
向下复制线:向下移动Alt
复制排队:向上移动Alt
删除行:Ctrl Shift k
虽然我意识到这不是键盘快捷键,但我想我会添加它,因为它不需要使用剪贴板,可能会帮助一些人 .
突出显示要复制的行 . 按控制,鼠标单击突出显示的文本,然后拖动到要转到的位置 . 它将复制突出显示的文本 .
在Visual Studio 2017中
(编辑)此功能现在内置于VS2017中:如果未选择任何内容,则Ctrl E,V复制一行,或重复选择 . 您可以将其分配给不同的组合键,或在菜单中找到它:
有关更多信息,请参见this reference .
Pre VS2017,使用剪贴板的内置方法
正如@cand所提到的,你可以做Ctrl C; Ctrl V.
如果未选择任何内容,Ctrl C将复制该行 .
宏解决方案(前VS2017)
如果您想要实现更完整的解决方案,也许是为了创建更简单的键盘快捷键,或者您不想影响剪贴板,请参阅本指南:
Duplicate line command for Visual Studio
公共模块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我的情况下)点击“分配”按钮,您现在应该看到“所选命令的快捷方式”文本框中的快捷方式点击确定按钮就是这样 . 请享用!
有一个免费的扩展,您可以下载here,它可以让您复制行而不替换剪贴板内容 .
默认情况下,它绑定到Alt D,但您可以通过转到工具 - >选项 - >环境 - >键盘将其更改为您想要的任何内容 . 在搜索框中键入"Duplicate"并查找"Edit.DuplicateSelection"并将快捷方式编辑为您想要的任何内容 . 我更喜欢Ctrl D与其他编辑器保持一致 .
这很简单的Ctrl C;按Ctrl V,检查link . 只要您不选择任何文本,当您按Ctrl C时,这将复制光标所在的行 .
Ctrl C V适用于VS2012,没有扩展名 .
Ctrl D在VS2012中使用Resharper为我工作 . 它's Resharper'的热键 .
在Visual Studio 2013中,您可以使用Ctrl C V.
这是一个基于Wael发布的链接中的宏,但在以下方面有所改进:
略短
稍快一些
评论:)
表示以"///"开头的行
只需一次撤消即可撤消
如果你喜欢使用CTRL ALT UP或CTRL UP DOWN复制eclipse样式行(或块),下面我为此目的发布宏:
为什么如此多的长期方法来完成如此简单的事情呢?从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月,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
你 MUST 用 admin rights 运行你的文本编辑器,否则它将无效!希望这有助于突然将其宏功能从其下方拉出的其他任何人 .
在visual studio 2008中,您可以使用CTRL C V.
只需将鼠标放在要复制的行上,然后执行CTRL C,然后在同一行上按CTRL V.像魔术一样工作:-)
http://www.jetbrains.com/resharper/
My story: 开始在一家新公司工作,之前从未使用过Visual Studio . 首先要做的事情之一 - 如何复制线条 . 设置宏后 ReSharper 告诉我:你想用我的快捷方式代替:"duplicate text" :)
在Visual Studio 2010中,使用CTRL INSERT复制光标所在的整行,然后可以使用Ctrl V或SHIFT INSERT粘贴它 .
VS 2017其
Ctrl
D
或Ctrl
C
;Ctrl
V
他们都为我工作 .你想要的命令是 Edit.Duplicate . 它映射到CtrlE,CtrlV . 这 will not 覆盖你的剪贴板 .
对于仍然在2008年后的Visual Studio上查看此问题的用户,添加了一个真正的Edit.Duplicate:
CTRL E,V
CTRL D(VS 2017 15.6)
我使用应用程序链接:AutoHotkey,下面的代码保存在
CommentDuplikateSaveClipboard.ahk
文件中 . 您可以轻松编辑/删除快捷方式 .我在Windows中的
Autostart
链接到此文件"Shortcut to CommentDuplikateSaveClipboard.ahk"
.此脚本保护您的剪贴板 .
如果您更好奇,可以在thisable / enable脚本中添加快捷方式 .
我有时使用非常令人印象深刻的
Multi Clipboard
脚本来轻松处理许多保存在磁盘上的clips
并使用CTRL C,X,V来复制,粘贴,剪切,下一个,上一个,删除它,全部删除 .在Visual Studio 2017和其他版本 No need Macro or Extension 中,
转到
Tools > Options > Environment > Keyboards
在
Show commands containing:
下写Edit.Duplicate
将光标置于
Press shortcut keys:
并按Ctrl D并单击Assign
按钮单击
OK
以保存新的键盘快捷键for Visual Studio 2012, 2013, 2015, 2017 点击链接并下载扩展程序
现在进入工具>选项>键盘,在搜索框中键入“Duplicate”(完整的命令字符串为“Edit.DuplicateSelection”) . 在这里,您可以使用与任何其他命令相同的方式将其绑定到任何快捷方式 .
Ctrl D是VS 2017 v15.6中引入的一个新快捷方式,它似乎与Ctrl E,V完全相同
它不会影响您的剪贴板
Source
不是答案,只是一个有用的补充:作为一个免费赠品,我刚刚发明了(嗯......嗯......调整了Lolo发布的代码)一个RemoveLineOrBlock宏 . 请享用!
对于visual studio 2010,请尝试使用这些命令进行快速重复(使用剪贴板):
单击要复制的行 . Ctrl C将复制该行 .
然后按Ctrl Shift Enter在插入点下方插入空白
(或者使用Ctrl Enter在插入点上方插入一个空行 . )