2012-08-09 66 views
69

在VS2010我有一个快捷键设置Alt键 + 向上/向下移动的代码行向上或向下,就像我曾经在Eclipse中我的Java天。移动线向上/向下快捷2012

现在,因为电动工具和宏(这是我如何在VS2010中设置这个快捷方式)在VS2012中不可用,所以我如何才能使它工作?

我见过有人提到Resharper可以做到这一点,但对于火和水的爱,我无法在可以做到这一点的命令列表中找到命令名称。 我试图ReSharper_MoveUp /下移,并且不移动线向上/向下:

Move_Up command did not do the trick

这种上下移动文本块。我只想逐行上下,而不是那里花哨的逻辑。 之前

What I have

ALT + 最多(当光标在的WriteLine线),我想看看这个:

Line moved one up, inside the bracket, indented

我看到这些线程: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。

还有其他想法吗?

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

UPD 2012 11月15日:跨声称它做什么,这里需要另一部分只是偶然。还没有尝试过,但:LineMan Extension

UPD 2015年5月10日刚装的VS2015 RC,这是内置不已: MoveLineUp/Down

+2

FYI [PowerTools的2012](http://visualstudiogallery.msdn.microsoft.com/3a96a4dc-ba9c-4589-92c5-640e07332afd)已经出来,现在有这个。 –

回答

33

更新:好哇,Productivity PowerTools VS2012现在可用,并且提供了这个功能

MoveLine Extension(用VS 2012兼容;我不得不手动重新启动我的VS才能看到(与其他个人最喜欢一起,Tools.AddEndTokenAtTheEnd。)在VS的键盘快捷键工具中的命令)。

+3

当你设置键盘快捷方式时,将范围设置为“文本编辑器” – Youngjae

+0

他们在这里取得成功的关键是你的快捷方式应该适用于文本编辑器,并且您需要删除(删除)已分配的现有键盘快捷方式。如果您有resharper,则需要删除'Resharper.Resharper.GoToNextMethod'和' ..GoToPrevMethod'(注意可能有两个快捷键(XAML和文本编辑器)需要删除。 – kingdango

+0

@Carl G - 有什么方法可以通过快捷方式水平移动单词吗?像Alt + Up或Alt + Down? –

10

安装ReSharper的。

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

  1. 查找“ReSharper的。ReSharper_MoveUp”
  2. 在‘使用新的快捷方式:’选择:‘文本编辑器’
  3. 单击‘按下快捷键’,按下你的快捷方式(例如Alt + ArrowUp)
  4. 按‘分配’按钮 同样与“ReSharper.ReSharper_MoveDown”

PS工作正常的单一线和多个选定的行,但是移除选择移动之后1行。希望有多次移动多个线在一个选择方式。

+2

罗,ReSharper的是想成为太大的帮助,并推动它太多的这段时间。它用当前行移动代码块。我想要的只是将一条线向上或向下移动,而不是相关的块。 – trailmax

+0

对于我来说,“ReSharper.ReSharper_MoveUp”和“ReSharper.ReSharper_MoveDown”命令只会在没有选择的情况下移动一条当前行,即使在块内部也是如此。不知道为什么你有另一种方式。我使用MSDN上的ReSharper 7.0.97.60和VS 2012 RTM。 – Drop

+2

这种情况不起作用的一个例子是,当'using'语句出现在文件的顶部时,用户想要将语句向下移动几行以便在'namespace'定义中。基于R#的下移命令可以正常工作了几个迭代,直到出现刚下'namespace'行'using'声明。现在,下一次迭代将尝试将名称空间移动到当前块的下面。 –

7

如果你有Resharper,那么哟u能打到按Ctrl ++ Alt键+移动当前排队。或Ctrl键 + + Alt键 + 向下移动一行。

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

编辑:它被映射到'ReSharper.ReSharper_MoveUp'/'MoveDown'命令。

+1

由于某种原因,这对我不起作用。我有完全相同的resharper并映射相同的命令。每当我尝试移动线向上/向下,他们正争先恐后地疯狂地:有时成另一种方法,有时向下跌破下一个块。但不是我想要的 - ( – trailmax

+0

Yups - 我看到了,尽管有点太晚了。你是否尝试重置键盘映射?可能是快捷方式映射到不同的命令?你的屏幕截图说它映射为XAML,你能看看它的映射的文本呢? – YetAnotherUser

+0

是的,没检查文本编辑器。事实上,我刚才重新安装VS2012和ReSharper的,它有默认的映射。你的快捷键可以工作,但不会移动一行或一行 - 向上或向下移动一个块 - ( – trailmax

2

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

只要按照formula349的评论:

我能得到这个工作与2012原样。

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

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

+0

有一个[扩展兼容2012年开箱](http://stackoverflow.com/a/12696202/39396)。 –

+0

对不起,我错过了你的答案 - 因假期而离开,并且因某些原因没有收到通知 – trailmax

51

对于那些使用Visual Studio 2013(或以上版本,我想可能)来解决这个问题的人,这个功能是直接嵌入到程序中的。只需使用Alt键最多Alt键向下与你的光标或所选线,向上和向下移动一行。

如果你想重新绑定在工具>选项>环境>键盘,键Edit.MoveSelectedLinesUpEdit.MoveSelectedLinesDown。您可能需要先从其他现有密钥中删除新组合。

+0

这个问题是关于2012年。 – trailmax

+20

@trailmax我知道,这已经得到它的答案,但我发布这个,让使用2013年的人可以意识到,这已经存在,所以他们不会像我一样去寻找更远的地方至。 – Keavon

+0

对VS VS 2013我不适用。 – RayLoveless

2

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

虽然ReSharper的热键做搬东西上下,他们一下原来的海报正在寻找的,他们是不是我想要的。这些热键移动方法和代码块,而不是个别行。

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

  • Edit.MoveSelectedLinesDown
  • Edit.MoveSelectedLinesUp

我使用Visual Studio 2013不过,所以我不知道,如果这些在旧版本存在。如果2012年没有这些热键,那么扩展是唯一的解决方案。无论哪种方式,我有一个问题在Visual Studio的列表中找到确切的热键,我花了很长时间才找到这些,所以我希望我的解决方案能够帮助其他人处理类似的情况。

+0

是的,这些在VS2012中并不存在。第二个答案指出VS2013有这些。 – trailmax

+0

传道! Resharper在我目前的公司中不满,所以我试图解决它...在卸载之后Resharper所有的快捷方式都被破坏了:( –

1

+ 德尔然后Ctrl键 + V

+ 德尔确实的(同Ctrl键 + X)操作在光标所在的当前行上。

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

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

使用这个快捷方式的一个缺点是,你将无法看到在你眼前移动(向上或向下)活动的线。

0

ReSharper向上移动和向下移动的快捷键非常聪明 - 它不会移动当前行(这很容易导致代码被破坏),它会将当前语句在构成方法的语句列表中上下移动身体。这比仅仅移动一行代码更强大。

但这并不能帮助您在if区块内获得您的声明。在这里你需要做两件事中的一件。

首先,移动声明上述if块,然后用按Ctrl ++ Alt键+右键推下来的范围。该语句现在将是if块内,你可以使用上下它走动在那里。您还可以使用按Ctrl ++ Alt键+拉起来的范围内,if块之外。

或者,你可以把文本插入符号的if块的大括号外面和使用按Ctrl + + Alt键 + 向下向下移动支架,跨过下面的语句,包括它们在if区块内。

这些键可以做的不仅仅是移动一条语句。如果将文本插入符号放在方法或类声明上,则向上向下将上下移动整个方法或类声明。如果你把文本插入符号的方法的参数列表,将重新排列各个参数(然后Alt键 + 输入可以调用更改签名重构)。

更多详细信息在help pages

+1

快捷方式试图成为“智能”是R#的问题。很多时候我只需要向上或向下移动一条线,与示波器或支架无关 – trailmax

+0

好吧,如果你对理解命令的工作方式不感兴趣,那么我无法帮助。ReShaprer is not' t“试图”变得聪明,它理解你的代码结构并帮助你重新排列它,使用编辑器自己的命令来编辑纯文本,这不是ReSharper的“问题” - 它给了你工具,你可以学习它并使用它,或使用其他的东西。 – citizenmatt

1

在Visual Studio 2017(ATLEAST)我有下面

enter image description here