Visual Studio:快捷键:重复行
在Visual Studio 2008中有重复行命令的快捷方式吗?
一些相似的例子:
- 在记事本++中 ,我可以复制当前行: Ctrl + D
- 在EditPlus中 : Ctrl + J
- 在NetBeans中 : Ctrl + Shift + ↓ / ↑
- 在Eclipse中 , 按Ctrl + Alt + ↓ / ↑
- 在Vi / Vim中 , yy p
- 等等
内置使用剪贴板的方法
正如@cand提到的,你可以做Ctrl + C ; Ctrl + V。
如果没有select任何内容, Ctrl + C将复制该行。
macros解决scheme
如果您想要实现更完整的解决scheme,也许要创build一个更简单的键盘快捷键,或者您不希望影响剪贴板,请参阅本指南:
Visual Studio的重复行命令
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
要创buildmacros,只需进入macros浏览器(“工具 – >macros – >macros浏览器”或Alt + F8),然后将代码粘贴到新模块中。 现在只需将键盘快捷键分配给它:
- 进入工具 – >选项…
- 在环境下,单击键盘
- 在“显示命令包含”文本框中input“duplicate”(根据您给模块的名称)。
- 您现在应该看到下面的列表中的macros
- 从“使用新的快捷方式”列表中select“文本编辑器”
- 在“按快捷键”文本框中设置焦点,然后按键盘上的组合键(Ctrl + Shift + D)
- 点击“分配”button
- 您现在应该在“选定命令快捷方式”文本框中看到快捷方式
- 点击OKbutton
就是这样。 请享用!
有一个免费的扩展,你可以在这里下载,让你复制行而不需要replace剪贴板的内容。
默认情况下,它绑定到Alt + D ,但你可以改变它到任何你想要的工具 – >选项 – >环境 – >键盘。 在search框中input“Duplicate”,然后查找“Edit.DuplicateSelection”并编辑任何你想要的快捷方式。 我更喜欢Ctrl + D与其他编辑器保持一致。
这很简单的Ctrl + C ; Ctrl + V ,检查这个链接 。 只要不select任何文本,当按Ctrl + C时,这将复制光标所在的行。
在VS2012上, Ctrl + C + V适用于我,没有扩展名。
在Visual Studio 2013中,您可以使用Ctrl + C + V
在Res20per中, Ctrl + D在VS2012中为我工作。 这是Resharper的热门关键。
这是一个基于Wael发布的链接的macros,但在以下方面有所改进:
- 略短
- 稍微快一点
- 注释 :)
- performance为以“///”开头的行
- 可以撤消一个单一的撤消
import系统 导入EnvDTE importEnvDTE80 公共模块Module1 Sub DuplicateLine() Dim sel As TextSelection = DTE.ActiveDocument.Selection sel.StartOfLine(0)''移动开始 sel.EndOfLine(True)''select结束 Dim line As String = sel.Text sel.EndOfLine(False)''移动结束 sel.Insert(ControlChars.NewLine +行,vsInsertFlags.vsInsertFlagsCollapseToEnd) 结束小组 结束模块
如果您喜欢使用CTRL + ALT + UP或CTRL + UP + DOWN复制日食样式行(或块),下面我发布macros用于此目的:
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
由于我无法在Visual Studio 2013中使用macros,我发现了一个Visual Studio插件(我在2012年和2013年使用它)。 重复select重复select和整个行 – 他们只需要部分select。 标准的快捷方式是ALT + D。
虽然我意识到这不是一个键盘快捷键,我想我会加上这个,因为它不需要使用剪贴板,可能会帮助一些人。
突出显示要复制的行。 按下控件,鼠标点击突出显示的文本,然后拖动到要去的位置。 它将复制突出显示的文本。
为什么要这么多漫长的方法来完成这么简单的事情呢? 从Microsoft下载并安装扩展需要不到一分钟的时间。 该页面表示,它将默认绑定到ALT + D ,但是对于我来说,它在Visual Studio Community 2015中自动将其绑定到CTRL + D ,而不做任何更改。
这里是从Microsoft.com下载扩展的链接。
我不知道这是否存在于Visual Studio 2008中,但在Visual Studio 2010+中,您可以通过以下方式轻松完成此操作:
不要select任何东西,然后按Ctrl + C然后(不做任何事情) Ctrl + V
我一直在使用Wael发布的macros: Visual Studio的重复行命令 ,但是它在一个星期前停止工作,我假定是因为Windows更新。 而且我是正确的,截至2014年2月,macros在VS2010(和2008年显然)被禁用。
要解决这个问题,您必须卸载安全更新,或者将一行代码添加到configuration文件中,如下所示。
在64位Windows机器上,这些文件的默认path是:
-
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"/> ...
你必须使用pipe理员权限运行你的文本编辑器,否则将无法工作! 希望这可以帮助任何突然有他们的macrosfunction的人从他们的下面拉出来。
在Visual Studio代码 ( WebMatrix )中:
向下复制行: Shift + Alt + 向下
向上复制行: Shift + Alt + 向上
删除行: Ctrl + Shift + k
对于那些感兴趣的,我重新创build了一个Visual Studiomacros的记事本++的确切行为。 下面你可以find代码(广泛评论)。 如果你想在Notepad ++( Ctrl + D )中有一个快捷方式,你可以通过Tools > Option > Environment > Keyboard
轻松做到这一点,并searchMacros.MyMacros.DuplicateText.DuplicateText
。 select命令并分配快捷方式(我build议仅将其分配给文本编辑器,而不是全局)。
对于那些不知道如何将这个macros添加到Visual Studio中,下面的解释如何做到这一点:
- 转到
Tools
,Macros
,Macro Explorer
(或使用shortcur Alt + F8 ) - 现在在macros资源pipe理器中,右键单击
MyMacros
并selectNew Module
- 一个新的窗口打开,并给它的名称
DuplicateText
- 现在通过双击打开这个模块。 一个新窗口(
Microsoft Visual Studio Macros
)打开。 - 现在删除您看到的所有文本,并粘贴下面的代码。
这是代码
Imports System Imports EnvDTE Imports EnvDTE80 Public Module DuplicateText ' Notepad++ duplication of text ' If no text is selected, duplicate the current line on the next line and leave the cursor ' at the current position. ' In all other cases, duplicate the selected text and insert it after the selection (without ' inserting a new line), leaving the selection intact Sub DuplicateText() Dim selTextSelection As TextSelection = DTE.ActiveDocument.Selection ' Retrieve the current cursor position Dim iActiveLine As Integer = selTextSelection.ActivePoint.Line Dim iActiveLineCharOffset As Integer = selTextSelection.ActivePoint.LineCharOffset ' Retrieve the selection start position Dim iStartLine As Integer = selTextSelection.TopPoint.Line Dim iStartLineCharOffset As Integer = selTextSelection.TopPoint.LineCharOffset ' Retrieve the selection end position Dim iEndLine As Integer = selTextSelection.BottomPoint.Line Dim iEndLineCharOffset As Integer = selTextSelection.BottomPoint.LineCharOffset If selTextSelection.IsEmpty Then ''' Case when no text is selected ' Select the current line and insert it after this line selTextSelection.SelectLine() selTextSelection.Insert(selTextSelection.Text, vsInsertFlags.vsInsertFlagsInsertAtEnd) ' Move the cursor back to the original position selTextSelection.MoveToLineAndOffset(iActiveLine, iActiveLineCharOffset) Else ''' Case when there is a selection ' Insert the selected text after the selection selTextSelection.Insert(selTextSelection.Text, vsInsertFlags.vsInsertFlagsInsertAtEnd) ' Recreate the original selection ' > Determine from which point the selection has to start ' >>> If the active point is at the start, start selecting from the end point, ' >>> else if the active is at the end, start selecting from the start point Dim iFromLine As Integer = If(iActiveLine = iStartLine, _ iEndLine, _ iStartLine) Dim iFromCharOffset As Integer = If(iActiveLineCharOffset = iStartLineCharOffset, _ iEndLineCharOffset, _ iStartLineCharOffset) ' > Move the cursor temporary to the point where you start selecting (see above) selTextSelection.MoveToLineAndOffset(iFromLine, iFromCharOffset) ' > Move the cursor to the (original) active point while selecting the text selTextSelection.MoveToLineAndOffset(iActiveLine, iActiveLineCharOffset, True) End If End Sub End Module
我使用应用程序链接:下面的代码保存在CommentDuplikateSaveClipboard.ahk
文件的AutoHotkey 。 您可以编辑/删除快捷方式,这很容易。
我有链接到这个文件"Shortcut to CommentDuplikateSaveClipboard.ahk"
在Windows 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
只要把你的鼠标放在行上复制,然后按CTRL + C ,然后在同一行上按CTRL + V. 像魔术一样工作:-)
在Visual Studio 2008中,您可以使用CTRL + C + V
不是一个答案,只是一个有用的补充:作为一个免费赠品,我刚发明(呃……呃…调整了Lolo发布的代码)一个RemoveLineOrBlockmacros。 请享用!
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
http://www.jetbrains.com/resharper/
我的故事:开始在一家新公司工作,之前从未使用过Visual Studio。 第一件事之一 – 如何复制线。 设置macrosReSharper后告诉我:你想replace我的快捷方式是:“重复文本”:)
在Visual Studio 2010中,用CTRL + INSERT复制光标所在的整行,然后使用Ctrl + V或SHIFT + INSERT粘贴它。
对于Visual Studio 2010,请尝试使用这些命令进行快速行复制(使用剪贴板):
-
点击你想要复制的行。 Ctrl + C将复制该行。
-
然后按Ctrl + Shift + Enter在插入点下面插入一个空白
(或者使用Ctrl + Enter在插入点上方插入空行。)
-
然后只需使用Ctrl + V粘贴该行。