Di chuyển lối tắt Lên / Xuống dòng trong Visual Studio 2012


76

Trong VS2010, tôi đã thiết lập phím tắt Alt+ Up/Downđể di chuyển các dòng mã lên hoặc xuống, giống như tôi đã từng có trong Eclipse trong những ngày còn Java.

Hiện tại vì Power Tools và macro (đó là cách tôi thiết lập phím tắt này trong VS2010) không khả dụng trong VS2012, làm cách nào để làm cho nó hoạt động?

Tôi đã thấy ai đó đề cập rằng Resharper có thể làm điều này, nhưng vì tình yêu của lửa và nước, tôi không thể tìm thấy tên lệnh trong danh sách lệnh có thể làm điều đó. Tôi đã thử ReSharper_MoveUp / MoveDown và điều đó không di chuyển lên / xuống:

Lệnh Move_Up không thực hiện được thủ thuật

Điều này di chuyển các khối văn bản lên và xuống. Tôi chỉ muốn từng dòng lên hoặc xuống, không có logic cầu kỳ ở đó. Trước

Tôi có gì

Sau ALT+ Up(khi con trỏ ở trên dòng WriteLine), tôi muốn thấy điều này:

Đã di chuyển một dòng lên trên, bên trong dấu ngoặc, thụt vào trong

Tôi đã thấy các chủ đề này: Tương đương với ALT + UP / DOWN (dòng di chuyển) của eclipse trong Visual Studio là gì? , Visual Studio: phím nóng để di chuyển dòng lên / xuống và di chuyển qua các thay đổi gần đây , nhưng không có giải pháp nào được đề xuất hoạt động trong VS2012.

Bất kỳ ý tưởng khác?

UPD 7 tháng 11 năm 2012: . Các tiện ích mở rộng đang bắt kịp với Visual Studio 2012. Bây giờ tôi biết ít nhất 3 tiện ích mở rộng cung cấp chức năng này:

UPD ngày 15 tháng 11 năm 2012: Chỉ tình cờ gặp một tiện ích mở rộng khác tuyên bố rằng nó thực hiện những gì được yêu cầu ở đây. Tuy nhiên vẫn chưa thử: Tiện ích mở rộng LineMan

UPD ngày 10 tháng 5 năm 2015 Chỉ cần cài đặt VS2015 RC và điều này đã được tích hợp sẵn: MoveLineUp / Down


2
FYI PowerTools 2012 đã ra mắt và hiện có.
Carl G

Điều này cũng áp dụng cho atmel Studio 7 để di chuyển các dòng lên và xuống.
Cutton Eye

Câu trả lời:


34

Cập nhật: huzzah, Productivity PowerTools VS2012 hiện đã có sẵn và cung cấp chức năng này (cùng với một mục yêu thích cá nhân khác Tools.AddEndTokenAtTheEnd,.)

Tiện ích mở rộng MoveLine (tương thích với VS 2012; tôi phải khởi động lại VS theo cách thủ công để xem các lệnh trong công cụ phím tắt của VS.)


3
Khi bạn thiết lập phím tắt, hãy tạo phạm vi cho "Trình soạn thảo văn bản".
Youngjae

Chìa khóa để thành công ở đây là phím tắt của bạn phải nằm trong Trình soạn thảo văn bản VÀ bạn cần XÓA (XÓA) các phím tắt hiện có đã được gán. Nếu bạn có resharper bạn cần phải loại bỏ 'Resharper.Resharper.GoToNextMethod' và '..GoToPrevMethod' (lưu ý có thể có hai phím tắt (XAML và Text Editor) mà cần phải được loại bỏ.
kingdango

@Carl G - Có cách nào để di chuyển từ theo chiều ngang bằng cách cắt ngắn không? như Alt + Up hoặc Alt + Down?
Sasan K

57

Đối với những người trả lời câu hỏi này bằng Visual Studio 2013 trở lên, tính năng này được tích hợp ngay trong chương trình. Chỉ cần sử dụng AltUpAltDownđể di chuyển dòng bằng con trỏ của bạn — hoặc các dòng đã chọn — lên và xuống.

Nếu bạn muốn đóng lại nó trong Công cụ > Tùy chọn > Môi trường > Bàn phím , các phím sẽ là Edit.MoveSelectedLinesUpEdit.MoveSelectedLinesDown. Trước tiên, bạn có thể cần xóa tổ hợp mới của mình khỏi các khóa hiện có khác.


Câu hỏi đặt ra là khoảng năm 2012.
trailmax

20
@trailmax Tôi biết, và điều đó đã có câu trả lời nhưng tôi đăng bài này để những người sử dụng 2013 có thể biết rằng điều này đã tồn tại để họ không phải tìm kiếm xa hơn như tôi đã phải làm.
Keavon

@RayL Có thể bạn bật lại các phím đó cho một thứ khác?
Keavon

4
@RayL Edit.MoveSelectedLinesUpEdit.MoveSelectedLinesDown. Vui lòng báo cáo lại nếu những điều đó làm việc cho bạn.
Keavon

1
@keavon, Điều đó hoạt động nhưng Vì một số lý do, tôi không thể gán "Atl + mũi tên lên" cho lệnh đó .... có thể liên quan đến bộ sạc lại hoặc powertools đang được cài đặt. Tôi nghĩ đó là những gì ban đầu khiến tôi khó chịu. Kỳ quặc. "ctrl + alt + Mũi tên LÊN" hoạt động rất tốt! Cảm ơn.
RayLoveless

10

Cài đặt ReSharper.

Mở Công cụ -> Tùy chọn -> Môi trường -> Bàn phím (như trong hình)

  1. Tìm "ReSharper.ReSharper_MoveUp"
  2. Trong "Sử dụng phím tắt mới trong:" hãy chọn: "Trình soạn thảo Văn bản"
  3. Nhấp vào "Nhấn phím tắt:" và nhấn phím tắt của bạn (ví dụ: Alt + ArrowUp)
  4. Nhấn nút "Gán" Tương tự với "ReSharper.ReSharper_MoveDown"

PS Hoạt động tốt cho các dòng đơn và nhiều dòng được chọn, nhưng loại bỏ vùng chọn sau khi di chuyển 1 dòng. Hy vọng có cách để di chuyển nhiều dòng nhiều lần trong một lựa chọn.


2
nah, resharper đang cố gắng tỏ ra quá hữu ích và đẩy nó quá nhiều lần này. Nó di chuyển khối mã với dòng hiện tại. Và tất cả những gì tôi muốn chỉ là di chuyển một dòng lên hoặc xuống, không phải một khối liên quan.
trailmax

Đối với tôi, lệnh "ReSharper.ReSharper_MoveUp" và "ReSharper.ReSharper_MoveDown" chỉ di chuyển một dòng hiện tại nếu không có lựa chọn, ngay cả bên trong khối. Không chắc tại sao bạn có nó theo cách khác. Tôi sử dụng ReSharper 7.0.97.60 và VS 2012 RTM từ MSDN.
Ivan Aksamentov - Thả

2
Một ví dụ về trường hợp điều này không hoạt động là khi một usingcâu lệnh xuất hiện ở đầu tệp và người dùng muốn di chuyển câu lệnh xuống một vài dòng để nằm trong namespaceđịnh nghĩa. Sử dụng lệnh MoveDown của R # hoạt động chính xác trong một vài lần lặp, cho đến khi usingcâu lệnh xuất hiện ngay dưới namespacedòng. Bây giờ lần lặp tiếp theo sẽ cố gắng di chuyển không gian tên xuống dưới khối hiện tại của nó.
Carl G

7

Nếu bạn có Resharper, thì bạn có thể nhấn Ctrl+ Shift+ Alt+ để di chuyển dòng hiện tại lên. hoặc Ctrl+ Shift+ Alt+ để di chuyển xuống một dòng.

Điều này hoạt động trong VS 2012 Premium với lược đồ bàn phím Visual Studio trong Resharper 7 (chính xác là 7.0.97.60).

Chỉnh sửa: Điều này được ánh xạ tới các lệnh 'ReSharper.ReSharper_MoveUp' / 'MoveDown'.


1
Điều đó không hiệu quả đối với tôi vì một số lý do. Tôi có chính xác cùng một bộ sạc lại và ánh xạ các lệnh giống nhau. Và bất cứ khi nào tôi cố gắng di chuyển các dòng lên / xuống, chúng sẽ nhảy theo một cách điên rồ: đôi khi chuyển sang một phương pháp khác, đôi khi xuống dưới khối tiếp theo. Nhưng không phải những gì tôi muốn - (
trailmax

Yups - Tôi đã thấy điều đó, mặc dù hơi muộn. Bạn đã thử đặt lại ánh xạ bàn phím của mình chưa? Có thể các phím tắt được ánh xạ tới một lệnh khác? Ảnh chụp màn hình của bạn cho biết nó được ánh xạ cho XAML, bạn có thể xem nó có được ánh xạ cho cả Văn bản không?
YetA AnotherUser

Đúng, đã kiểm tra Trình soạn thảo văn bản. Trên thực tế, tôi vừa cài đặt lại VS2012 và Resharper và nó có ánh xạ mặc định. Các phím tắt của bạn làm việc, nhưng nó không di chuyển một dòng lên hoặc xuống - di chuyển một khối lên hoặc xuống - (
trailmax

Nó di chuyển khối mã hoàn chỉnh nếu con trỏ được đặt trên khối mã bắt đầu / kết thúc dòng. Bạn đã thử chọn toàn bộ dòng và sau đó thử phím tắt?
YetA AnotherUser

6

Trong Visual Studio 2017 (ít nhất) tôi có bên dưới

nhập mô tả hình ảnh ở đây


Nó trong VS2019 nơi bạn hiển thị, nhưng các khóa không được ánh xạ (ít nhất là trong cài đặt của tôi). Phải lập bản đồ các phím bằng tay.
ΩmegaMan

2

Bạn có thể sử dụng phần mở rộng Move Line Command .

Chỉ cần làm theo bình luận của công thức349:

Tôi đã có thể làm cho điều này hoạt động với năm 2012 như hiện tại.

Đổi tên gói thành .zip và giải nén tất cả các tệp vào một thư mục. Chỉnh sửa tệp extension.vsixmanifest và tìm nút XML SupportedProducts. Thay đổi Phiên bản = "10.0" thành Phiên bản = "11.0".

Zip lại nội dung thư mục và đổi tên lại thành .vsix. Hoạt động tuyệt vời!



Xin lỗi gius. Tôi đã bỏ lỡ câu trả lời của bạn - đã đi vào ngày lễ và không nhận được thông báo vì một số lý do.
trailmax

2

Trong khi rất nhiều người dường như đang khuyến cáo sai. Visual Studio Extensions và Resharper, tôi muốn đến thời điểm hiện có một mẹ đẻ hotkey mà hoàn thành được mục tiêu này. Tôi đến với câu hỏi này để cố gắng tìm câu trả lời, vì Resharper của tôi đã thay thế các phím nóng mặc định của tôi bằng các phiên bản MoveUp và MoveDown của họ.

Và trong khi các phím nóng của Resharper di chuyển mọi thứ lên và xuống, chúng không phải là những gì người đăng ban đầu đang tìm kiếm và chúng không phải là những gì tôi muốn. Các phím nóng này di chuyển các phương thức và khối mã, không di chuyển các dòng riêng lẻ.

Visual studio có hai lệnh phím nóng để di chuyển các dòng đã chọn của bạn lên trên hoặc xuống dưới. Các phím nóng này là:

  • Edit.MoveSelectedLinesDown
  • Edit.MoveSelectedLinesUp

Tuy nhiên, tôi đang sử dụng Visual Studio 2013, vì vậy tôi không biết liệu chúng có tồn tại trong phiên bản cũ hơn hay không. Nếu năm 2012 không có những phím nóng này thì có lẽ một phần mở rộng là giải pháp duy nhất.

Dù bằng cách nào, tôi đã gặp sự cố khi tìm phím nóng chính xác trong danh sách của visual studio và tôi đã mất một khoảng thời gian để tìm ra những thứ này, vì vậy tôi hy vọng rằng giải pháp của mình sẽ giúp được ai đó trong tình huống tương tự như tôi.


Đúng, những điều này không tồn tại trong VS2012. Và câu trả lời thứ hai nói rằng VS2013 có những điều này.
trailmax

Thuyết giáo! Resharper không được tán thành trong công ty hiện tại của tôi, vì vậy tôi đang cố gắng để có được xung quanh nó ... sau uninstally Resharper tất cả các phím tắt của tôi đang vỡ :(
Eleanor Zimmermann

1

Shift+ Delvà sau đó Ctrl+V

Shift+ Delthực hiện thao tác cắt (giống như Ctrl+ X) trên dòng hiện tại mà con trỏ được đặt trên đó.

Sau đó, bạn có thể sử dụng Ctrl+ Vđể dán nó vào bất kỳ nơi nào bạn thích.

Điều tốt là bạn không cần phải chọn dòng hiện tại hoàn chỉnh , chỉ cần con trỏ cần được định vị trên dòng.

Một nhược điểm khi sử dụng phím tắt này là bạn sẽ không thể nhìn thấy đường di chuyển (lên hoặc xuống) sống động trước mắt mình.


0

Các phím tắt di chuyển lên và di chuyển xuống của ReSharper rất thông minh - thay vì chỉ di chuyển dòng hiện tại (có thể dễ dẫn đến mã bị hỏng), nó sẽ di chuyển câu lệnh hiện tại lên và xuống trong danh sách các câu lệnh tạo nên phần thân phương thức. Điều này mạnh hơn nhiều so với việc chỉ di chuyển một dòng mã.

Nhưng điều này không giúp bạn nhận được câu lệnh của mình bên trong ifkhối. Ở đây bạn cần thực hiện một trong hai điều.

Thứ nhất, di chuyển các tuyên bố trên các ifkhối, sau đó sử dụng Ctrl+ Shift+ Alt+ Rightđể đẩy nó xuống trong phạm vi. Bây giờ câu lệnh sẽ ở bên trong ifkhối và bạn có thể sử dụng lên và xuống để di chuyển nó xung quanh đó. Bạn cũng có thể sử dụng Ctrl+ Shift+ Alt+ Leftđể kéo nó lên trong phạm vi, bên ngoài ifkhối.

Ngoài ra, bạn có thể đặt dấu mũ văn bản ở bên ngoài dấu ngoặc nhọn đóng của ifkhối và sử dụng Ctrl+ Shift+ Alt+ Downđể di chuyển dấu ngoặc nhọn xuống, bước qua các câu lệnh sau, bao gồm cả chúng bên trong ifkhối.

Các phím này có thể làm được nhiều việc hơn là chỉ di chuyển một câu lệnh đơn lẻ. Nếu bạn đặt dấu mũ văn bản trên khai báo phương thức hoặc lớp, UpDownsẽ di chuyển toàn bộ khai báo phương thức hoặc lớp lên xuống. Nếu bạn đặt dấu mũ văn bản trong danh sách tham số của một phương thức LeftRightsẽ sắp xếp lại các tham số riêng lẻ (và sau đó Alt+ Entercó thể gọi tái cấu trúc Chữ ký Thay đổi).

Thêm chi tiết trong các trang trợ giúp .


2
Các phím tắt cố gắng trở nên "thông minh" là vấn đề với R #. Rất nhiều lần tôi chỉ cần di chuyển một đường lên hoặc xuống, không liên quan gì đến ống soi hay mắc cài.
trailmax

Chà, nếu bạn không quan tâm đến việc hiểu các lệnh bạn đang hỏi về công việc như thế nào, thì tôi không thể giúp được. ReShaprer không "cố gắng" để trở nên thông minh, nó hiểu cấu trúc mã của bạn và đang giúp bạn sắp xếp lại nó. Sử dụng các lệnh riêng của trình soạn thảo để chỉnh sửa văn bản thuần túy. Đây không phải là "vấn đề" của ReSharper - nó cung cấp cho bạn công cụ, bạn có thể học nó và sử dụng nó, hoặc sử dụng thứ khác.
citizenmatt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.