Visual Studio:快捷键:重复行

Visual Studio 2008中有< / em > < em >重复行命令的快捷方式吗?

一些类似的例子:

  • < em > < a href = " http://notepad-plus-plus.org/ " rel = " noreferrer " title =“notepad++”> notepad++ < / > < / em >中,我可以用:Ctrl+D复制当前行
  • EditPlus中:Ctrl+J
  • NetBeans中:Ctrl+转变+达;/
  • Eclipse中,Ctrl+Alt+达;/
  • < em > < a href = " http://www.vim.org/ " rel = " noreferrer " title =“活力”> Vi / VIM < / > < / em >yyp
  • 等。
326995 次浏览

在Visual Studio 2022中

__abc0 + __abc1, __abc2

在Visual Studio 2019中

__abc0 + __abc1

在Visual Studio 2017 (v15.6及以后版本)中

__abc0 + __abc1

在Visual Studio 2017 (pre v15.6)

(编辑)这个特性现在内置在VS2017中:Ctrl + E,如果没有选择,V会重复一行,或者重复选择。你可以将它分配给不同的键组合,或者在菜单中找到它:

Duplicate line in VS2017 .

更多信息请参见这个引用

Pre VS2017,内置方法使用剪贴板

正如@cand提到的,你可以只做Ctrl + C;__abc0 + __abc3。

如果没有选择,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
要创建宏,只需转到宏资源管理器 (“工具→宏→宏观Explorer"或Alt+F8)并复制粘贴代码 一个新的模块。现在只需给它分配一个键盘快捷键:

  1. 点击工具->选项…
  2. 在环境下,单击键盘
  3. 在“Show Commands contains”;文本框,输入“复制”;(这是根据你给模块的名字。)
  4. 您现在应该在下面的列表中看到宏
  5. 选择“文本编辑器”;从“使用新的快捷方式”;列表
  6. 在“;按快捷键”中设置焦点;然后在键盘上键入你想要使用的组合(Ctrl+转变+D in) 李我的情况)< / >
  7. 点击“指派”;按钮
  8. 您现在应该在“选定命令的快捷方式”中看到快捷方式;文本框
  9. 点击OK按钮

就是这样。享受吧!

这是简单的Ctrl + C;Ctrl + V,检查这个 链接。只要你不选择任何文本,当你按Ctrl+C时,这将复制光标所在的行

如果你喜欢使用CTRL+ALT+向上CTRL+向上+下来复制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宏。享受吧!< / p >
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 + 转变 + 输入在插入点下方插入空白

    (或者使用Ctrl + 输入在插入点上方插入空行)

  • 然后简单地使用Ctrl + V来粘贴该行。

http://www.jetbrains.com/resharper/

我的故事:开始在一个新公司工作,以前从未使用过Visual Studio。第一件事之一,如何复制线条。在设置宏ReSharper告诉我:你想替换我的快捷方式是:“重复文本”:)

虽然我意识到这不是一个键盘快捷键,但我想我应该添加这个,因为它不需要使用剪贴板,可能会帮助到一些人。

突出显示要复制的行。 按控制,鼠标单击突出显示的文本,并拖动到您想要去的地方。它将复制突出显示的文本

我不知道这是否存在于Visual Studio 2008,但在Visual Studio 2010+你可以很容易地做到这一点:

不要选择任何东西,然后按Ctrl + C,然后(不做任何其他事情)Ctrl + V

Ctrl + D在VS2012与Resharper工作。这是Resharper的热键。

有一个免费的扩展,你可以下载在这里,让你复制行而不替换剪贴板的内容。

默认情况下,它绑定到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
  • < p > C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

    ...
    <configuration>
    <runtime>
    <AllowDComReflection enabled="true"/>
    ...
    

    editor截图

必须运行你的文本编辑器与管理的权利或它不会工作!希望这能帮助那些突然有宏功能的人。

Ctrl + C + V适用于我的VS2012没有扩展。

我使用应用程序链接:AutoHotkey与以下代码保存在CommentDuplikateSaveClipboard.ahk文件。你可以编辑/删除快捷方式,这很容易。
我有链接到这个文件"Shortcut to CommentDuplikateSaveClipboard.ahk"Autostart在windows。这个脚本保护你的剪贴板。如果你更好奇,你可以为这个脚本添加快捷方式。我有时会使用非常令人印象深刻的Multi Clipboard脚本来轻松处理磁盘上保存的许多clips,并使用CTRL+CXV来复制,粘贴,剪切,下一个,上一个,删除这个,删除所有。

;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 2010中,你复制光标所在的整行CTRL + 插入,然后你可以使用Ctrl + V转变 + 插入来粘贴它。

因为我不能在我的Visual Studio 2013中使用宏,我找到了一个Visual Studio插件(我在2012年和2013年使用它)。 重复选择重复选择和整行-他们只需要部分选择。标准的快捷方式是ALT + D.

只要把你的鼠标放在一行上进行复制并执行CTRL+C,然后在同一行上执行CTRL+V。 工作就像魔法:-)

在Visual Studio 2013中,你可以使用Ctrl+C+V

在visual studio 2008中,您可以使用CTRL + C + V

Visual studio代码 (WebMatrix)中:

向下复制行:转变 + Alt + 下来

拷贝行顺序:转变 + Alt + 向上

删除行:Ctrl + 转变 + k

为什么要用这么长的方法来完成这么简单的事情?它需要不到一分钟的时间从微软下载和安装扩展。该页面说它将默认绑定到ALT+D,但对我来说,它在Visual Studio Community 2015中自动绑定到CTRL+D,没有任何更改。

这是从Microsoft.com下载扩展的链接

VS 2017它的Ctrl + DCtrl + C;__abc0 + __abc5 他们都为我工作

您需要的命令是编辑。重复的。它被映射到CtrlECtrlV。这个不会覆盖你的剪贴板。

对于那些在2008年之后还在Visual Studio上查看这个问题的人,一个真正的编辑。副本已添加:

  • CTRL + E V
  • __abc0 + __abc1 (vs 2017 15.6+)

for Visual Studio 2012, 2013, 2015, 2017请点击链接并下载扩展

https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection

现在进入工具>选项>键盘,在搜索框中输入“复制”(完整的命令字符串是“Edit.DuplicateSelection”)。在这里,您可以以与其他命令相同的方式将其绑定到任何快捷方式。

Ctrl + D是在VS 2017 v15.6中引入的一个新快捷方式,它似乎做的事情与Ctrl + EV完全相同

Ctrl + D将复制光标所在的行,并将其插入到焦点行的正下方。如果希望复制一组特定的代码,只需在调用duplicate code命令之前选择要复制的代码部分。

它不会影响你的剪贴板

Source .

在Visual studio 2017或其他版本不需要宏或扩展中,

  1. Tools > Options > Environment > Keyboards
  2. Show commands containing:下写入Edit.Duplicate
  3. 将光标放置到Press shortcut keys:,按Ctrl + D,然后单击Assign按钮
  4. 单击OK保存新的键盘快捷方式

enter image description here

VS2019VS2017中,你可以选择工具- >选项- >键盘,你可以在scheme下拉选项中选择Resharper (Visual Studio),你将得到一个映射,就像你使用Resharper一样,在这种情况下,Ctrl + D将完成复制该行的技巧。无论如何,基于文档,这应该是在Visual Studio 2017 Version 15.8或更大的门

对于Visual Studio Code 2019:

< em > < kbd > ctrl < / kbd > + < kbd > k < / kbd > < / em >< em > < kbd > ctrl < / kbd > + < kbd > s < / kbd > < / em >编辑菜单键盘快捷键

编辑“向下复制一行”(转变 + Alt + DownArrow)到您自己的快捷方式。

你可以用命令ID: editor.action.copyLinesDownAction找到它

对我来说,它是ctrl+d

Visual Studio Code: May 2020 (version 1.46) Shift + uprow /DownArrow:复制代码行

如果你有一个macos版本,cmd+转变+D可以帮你完成这项工作

在Linux Mint上,你可以做到; Ctrl + Alt + Shift + 2 =>< em >复制 Ctrl + Alt + Shift + 8 =>复制下来