78

在 VS2010 中,我设置了一个快捷方式Alt+Up/Down来向上或向下移动代码行,就像我在 Java 时代在 Eclipse 中使用的那样。

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

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

Move_Up 命令没有起到作用

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

是)我有的

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

行上移一格,在括号内,缩进

我看过这些线程:Visual Studio 中 Eclipse 的 ALT+UP/DOWN (move line) 的等价物是什么?Visual Studio:热键向上/向下移动和移动通过最近的变化,但建议的解决方案在 VS2012 中都不起作用。

还有其他想法吗?

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

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

UPD 2015 年 5 月 10 日刚刚安装了 VS2015 RC,这已经是内置的: 向上/向下移动线

4

9 回答 9

61

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

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

于 2014-07-30T21:00:56.593 回答
35

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

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

于 2012-10-02T18:37:50.280 回答
10

安装 ReSharper。

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

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

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

于 2012-08-17T16:43:58.697 回答
7

如果你有 Resharper,那么你可以点击Ctrl+ Shift+ Alt+来移动当前行。或Ctrl+ Shift+ Alt+向下移动一行。

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

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

于 2012-08-20T21:41:51.873 回答
6

在 Visual Studio 2017(至少)中,我有以下

在此处输入图像描述

于 2017-08-01T05:06:05.560 回答
2

您可以使用移动线命令扩展。

只需按照公式 349 的评论:

我能够按原样使用 2012 年。

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

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

于 2012-09-21T11:58:19.520 回答
2

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

虽然 Resharper 的热键确实可以上下移动东西,但它们不是原始海报所要寻找的,也不是我想要的。这些热键移动方法和代码块,而不是单独的行。

Visual Studio 有两个热键命令来向上或向下移动您选择的行。这些热键是:

  • Edit.MoveSelectedLinesDown
  • Edit.MoveSelectedLinesUp

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

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

于 2014-12-11T20:55:49.443 回答
1

Shift+Del然后Ctrl+V

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

然后您可以使用Ctrl+V将其粘贴到您喜欢的任何位置。

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

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

于 2017-01-02T12:15:54.507 回答
0

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

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

首先,将语句移到块上方if然后使用Ctrl++将其在范围内下推Shift。该语句现在将位于块内,您可以使用 up 和 down 在其中移动它。您也可以使用++ +在块外的范围内将其拉起。AltRightifCtrlShiftAltLeftif

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

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

帮助页面中的更多详细信息。

于 2017-01-12T09:19:15.493 回答