【问题标题】:Move line Up/Down shortcut in Visual Studio 2012在 Visual Studio 2012 中向上/向下移动行快捷方式
【发布时间】:2012-08-06 15:13:55
【问题描述】:

在 VS2010 中,我设置了一个快捷方式 Alt+Up/Down 来上下移动代码行,就像我以前在 Java 中的 Eclipse 中一样天。

现在由于电动工具和宏(这是我在 VS2010 中设置此快捷方式的方式)在 VS2012 中不可用,我该如何使其工作?

我看到有人提到 Resharper 可以做到这一点,但是出于对火与水的热爱,我在可以做到这一点的命令列表中找不到命令名称。 我已经尝试过 ReSharper_MoveUp/MoveDown 并且不会向上/向下移动线条:

这会上下移动文本块。我只想逐行向上或向下,没有花哨的逻辑。 之前

ALT+Up 之后(当光标位于 WriteLine 行时)我想看到这个:

我已经看到了这些线程:What's the equivalent for eclipse's ALT+UP/DOWN (move line) in Visual Studio?Visual Studio: hotkeys to move line up/down and move through recent changes,但是建议的解决方案在 VS2012 中都不起作用。

还有其他想法吗?

2012 年 11 月 7 日更新:。扩展正在赶上 Visual Studio 2012。现在我知道至少有 3 个扩展可以提供此功能:

UPD 2012 年 11 月 15 日: 刚刚偶然发现另一个扩展程序,声称它可以满足此处的要求。不过没试过:LineMan Extension

UPD 2015 年 5 月 10 日 刚刚安装了 VS2015 RC,这已经是内置的:

【问题讨论】:

  • 仅供参考 PowerTools 2012 现已推出。
  • 这也适用于 atmel Studio 7 用于上下移动行。

标签: keyboard-shortcuts text-editor visual-studio-2012


【解决方案1】:

安装 ReSharper。

打开工具->选项->环境->键盘(如图)

  1. 查找“ReSharper.ReSharper_MoveUp”
  2. 在“使用新的快捷方式:”中选择:“文本编辑器”
  3. 点击“按下快捷键:”并按下您的快捷键(例如 Alt+ArrowUp)
  4. 按“分配”按钮 与“ReSharper.ReSharper_MoveDown”相同

附:适用于单行和多行选定的行,但在移动 1 行后删除选择。希望有办法在一次选择中多次移动多行。

【讨论】:

  • 不,resharper 试图提供太多帮助,这一次推动它太多了。它使用当前行移动代码块。我想要的只是简单地向上或向下移动一行,而不是相关的块。
  • 对我来说,“ReSharper.ReSharper_MoveUp”和“ReSharper.ReSharper_MoveDown”命令如果没有选择,即使在块内也只会移动一个当前行。不知道为什么你有另一种方式。我使用来自 MSDN 的 ReSharper 7.0.97.60 和 VS 2012 RTM。
  • 这不起作用的一个例子是当 using 语句出现在文件的顶部,并且用户想要将语句向下移动几行以便在 @987654322 内@ 定义。使用 R# 的 MoveDown 命令在几次迭代中都能正常工作,直到 using 语句出现在 namespace 行的正下方。现在下一次迭代将尝试将命名空间移动到其当前块下方。
【解决方案2】:

如果你有 Resharper,那么你可以按 Ctrl + Shift + Alt + 来移动目前的阵容。或 Ctrl + Shift + Alt + 向下移动一行。

这适用于 VS 2012 Premium 和 Resharper 7 中的 Visual Studio 键盘方案(7.0.97.60 到 准确)。

编辑:这被映射到“ReSharper.ReSharper_MoveUp”/“MoveDown”命令。

【讨论】:

  • 由于某种原因,这对我不起作用。我有完全相同的 resharper 并映射相同的命令。每当我尝试向上/向下移动线条时,它们都会以一种疯狂的方式跳跃:有时向上进入另一种方法,有时向下移动到下一个块下方。但不是我想要的-(
  • 是的 - 我看到了,虽然有点太晚了。您是否尝试过重置键盘映射?可能是快捷方式映射到不同的命令?您的屏幕截图显示它已针对 XAML 进行了映射,您能否查看它是否也针对 Text 进行了映射?
  • 是的,确实检查了文本编辑器。事实上,我刚刚重新安装了 VS2012 和 Resharper,它具有默认映射。您的快捷方式确实有效,但它不会向上或向下移动一行 - 向上或向下移动一个块 -(
  • 如果光标位于行首/行尾代码块,则移动整个代码块。您是否尝试过选择整行然后尝试使用快捷方式?
【解决方案3】:

您可以使用Move Line Command 扩展名。

只要按照formula349的评论:

我能够按原样使用 2012。

将包重命名为 .zip 并将所有文件解压缩到一个文件夹中。编辑 extension.vsixmanifest 文件并查找 SupportedProducts XML 节点。将版本="10.0" 更改为版本="11.0"。

重新压缩文件夹内容并重命名为 .vsix。效果很好!

【讨论】:

【解决方案4】:

更新:huzzah,Productivity PowerTools VS2012 现在可用并提供此功能(以及另一个个人最爱,Tools.AddEndTokenAtTheEnd。)

MoveLine Extension(与 VS 2012 兼容;我必须手动重启 VS 才能看到 VS 键盘快捷键工具中的命令。)

【讨论】:

  • 设置键盘快捷键时,将范围设置为“文本编辑器”。
  • 他们成功的关键是您的快捷方式应适用于文本编辑器,并且您需要删除(删除)已分配的现有键盘快捷方式。如果您有 resharper,则需要删除“Resharper.Resharper.GoToNextMethod”和“..GoToPrevMethod”(请注意,可能需要删除两个快捷方式(XAML 和文本编辑器)。
  • @Carl G - 有没有办法通过捷径水平移动单词?比如 Alt + Up 或 Alt + Down ?
【解决方案5】:

对于那些使用 Visual Studio 2013 或更高版本解决此问题的人,该功能已内置于程序中。只需使用 AltUpAltDown 移动光标所在的行(或选定的行),然后下来。

如果你想在Tools > Options > Environment > Keyboard中重新绑定它,键是@ 987654321@ 和Edit.MoveSelectedLinesDown。您可能需要先从其他现有密钥中删除您的新组合。

【讨论】:

  • 问题是关于 2012 年的。
  • @trailmax 我知道,这已经得到了它的答案,但我发布这个是为了让使用 2013 的人可以意识到这已经存在,所以他们不会像我一样去寻找更远的地方到。
  • @RayL 也许你将这些键反弹到别的东西上?
  • @RayL Edit.MoveSelectedLinesUpEdit.MoveSelectedLinesDown。如果这些对你有用,请报告。
  • @keavon,这行得通,但由于某种原因,我无法将“Atl + 向上箭头”分配给该命令....可能与正在安装的 resharper 或 powertools 有关。我认为这就是最初让我搞砸的原因。奇怪的。 “ctrl+alt+UP Arrow”效果很好!谢谢。
【解决方案6】:

虽然很多人似乎都在推荐 misc. Visual Studio Extensions 和 Resharper,我想指出有一个 native 热键可以实现这一目标。我来到这个问题试图找到答案,因为我的 Resharper 用他们的 MoveUp 和 MoveDown 版本替换了我的默认热键。

虽然 Resharper 的热键确实可以上下移动内容,但它们不是原始发帖人正在寻找的,也不是我想要的。这些热键移动方法和代码块,不是单独的行。

Visual Studio 有两个热键命令可以向上或向下移动选定的行。 这些热键是:

  • Edit.MoveSelectedLinesDown
  • Edit.MoveSelectedLinesUp

但是,我使用的是 Visual Studio 2013,所以我不知道这些是否存在于旧版本中。如果 2012 没有这些热键,那么也许扩展是唯一的解决方案。

不管怎样,我在 Visual Studio 的列表中定位确切的热键时遇到了问题,我花了很长时间才找到这些,所以我希望我的解决方案能够帮助遇到与我类似情况的其他人。

【讨论】:

  • 是的,这些在 VS2012 中不存在。第二个答案指出VS2013有这些。
  • 传道! Resharper 在我现在的公司中不受欢迎,所以我试图绕过它......卸载 Resharper 后,我所有的快捷方式都被破坏了:(
【解决方案7】:

Shift+Del 然后Ctrl+V

Shift+Del 执行 cut(与 Ctrl+X 相同) 对光标所在的当前行进行操作。

然后你可以使用Ctrl+V将它粘贴到你喜欢的任何地方。

好在你不需要选择完整的当前行,只需要将光标定位在该行上。

使用此快捷方式的一个缺点是您将无法看到在您眼前生动移动(向上或向下)的线条。

【讨论】:

    【解决方案8】:

    ReSharper 的上移和下移快捷方式很智能 - 它不仅会移动当前行(这很容易导致代码损坏),还会在构成方法体的语句列表中上下移动当前语句.这比仅仅移动一行代码要强大得多。

    但这并不能帮助您将语句放入 if 块中。在这里,您需要做两件事之一。

    首先,将语句上方移动到if块,然后使用Ctrl+Shift+Alt +Right 将其在范围内向下推。该语句现在将位于if 块内,您可以使用向上和向下在其中移动它。您还可以使用 Ctrl+Shift+Alt+Left 将其拉到@之外的范围内987654325@块。

    或者,您可以将文本插入符号放在 if 块的右大括号的外侧并使用 Ctrl+Shift+Alt kbd>+Down 将大括号向下移动,越过以下语句,包括if 块内的语句。

    这些键可以做的不仅仅是移动单个语句。如果您将文本插入符号放在方法或类声明上,UpDown 将上下移动整个方法或类声明。如果将文本插入符号放在方法的参数列表中,LeftRight 将重新排列各个参数(然后是 Alt+ Enter 可以调用 Change Signature 重构)。

    更多详情请关注help pages

    【讨论】:

    • 试图“聪明”的快捷方式是 R# 的问题。很多时候我只需要向上或向下移动一条线,与范围或大括号无关。
    • 好吧,如果您对了解您所询问的命令如何工作不感兴趣,那么我无能为力。 ReShaprer 并没有“试图”变得聪明,它了解您的代码结构并帮助您重新排列它。使用编辑器自己的命令来编辑纯文本。这不是 ReSharper 的“问题”——它为您提供了工具,您可以学习并使用它,或者使用其他东西。
    【解决方案9】:

    在 Visual Studio 2017 中(至少)我在下面

    【讨论】:

    • 它在您显示的 VS2019 中,但未映射键(至少在我的安装中)。必须手动映射键。
    猜你喜欢
    • 2016-01-17
    • 2010-09-12
    • 2021-12-14
    • 2014-05-18
    • 2016-08-11
    • 2013-06-05
    • 2016-12-21
    • 1970-01-01
    • 2010-09-06
    相关资源
    最近更新 更多