2012-08-09 132 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