IntelliJ IDEA cách chỉnh sửa nhiều dòng


113

Tôi đã thấy điều này được thực hiện trong TextMate và tôi đã tự hỏi liệu có cách nào để làm điều đó trong IDEA hay không.

Giả sử tôi có mã sau:

 leaseLabel = "Lease";
 leaseLabelPlural = "Leases";
 portfolioLabel = "Portfolio";
 portfolioLabelPlural = "Portfolios";
 buildingLabel = "Building";

Cách tốt nhất để thêm '+ "foo"' vào mỗi dòng là gì? Chế độ cột sẽ không hoạt động vì các dòng không được căn chỉnh chính xác ở phía bên phải ... trừ khi có một cách dễ dàng để căn phải văn bản: P


Đây là điều mà tôi cần làm không thường xuyên đến nỗi ngay cả khi có một chế độ đặc biệt trong trình soạn thảo của tôi, tôi cũng không bao giờ nhớ cách sử dụng nó. Tôi chỉ sử dụng khay nhớ tạm nếu nó chỉ dành cho một vài dòng (như trên). Nếu nó cho hàng trăm dòng, đó là lúc tôi chuyển sang tiện ích tìm / thay thế.
Michael Burr

Ở chế độ cột, hãy tạo 5 con trỏ ở bên trái. Sau đó, sử dụng Ctrl-RightArrow để chuyển sang bên phải. Nhiều con trỏ, macro và tìm kiếm thay thế là tất cả những cách tuyệt vời để hoàn thành việc này! Tôi không thể quyết định cái nào tôi thích nhất.
Daniel Alexiuc,

Tùy chọn + Shift + Click của nó cho Macbook. Tất cả các phím tắt Intellij: docs.google.com/document/d/…
Soham Mehta

Câu trả lời:


174

Vì Idea IntelliJ IDEA 13.1 có khả năng chỉnh sửa nhiều dòng.

Sử dụng:

Alt+ Shift+ Nhấp chuột

để lựa chọn. Thông tin thêm về cải tiến mới này trong bài đăng blog của IntelliJ tại đây . Tính năng rất hữu ích.


1
Cảm ơn các liên kết. Tôi vô tình nhấn vào tính năng này nhưng bằng cách nào đó tôi không thể tìm ra tổ hợp phím nào mà tôi đã vô tình nhấn :)
aberrant80

12
Kể từ tháng 2 năm 2015 Alt-Shift-Insert: Chế độ chọn cột HOẶC đơn giản là Alt-Select. rất mạnh mẽ và dễ sử dụng. Tôi không chắc tại sao mọi người lại bảo OP sử dụng "tìm kiếm và thay thế" khi anh ấy hỏi rõ ràng về việc chỉnh sửa dòng đồng thời - thực tế là anh ấy hỏi điều đó cho thấy anh ấy đủ thông minh để nhận thức về tìm kiếm và thay thế.
RichieHH

4
Đối với Mac, Alt + Click của nó.
Gowtham Gopalakrishnan

5
Và bây giờ, chỉ cần chuột giữa nút + kéo.
WesternGun

1
Tùy chọn + Shift + Click của nó cho Macbook. Tất cả các phím tắt Intellij: docs.google.com/document/d/…
Soham Mehta

114

Tôi sử dụng Chế độ chọn cột ( Cmd+ Shift+ 8trên Mac) cho phép tạo nhiều con trỏ thông qua Shift+ Uphoặc Shift+ Downsau đó chỉnh sửa tất cả các dòng cùng nhau.

Bắt đầu từ IntelliJ IDEA 14, còn có Dấu nháy sao ở Trên / Dưới :

  • Windows: Ctrl, Ctrl+ Up/Down
  • MacOS: Option, Option+ Up/Down

(giữ lần nhấn thứ hai của phím bổ trợ, sau đó nhấn phím mũi tên)


5
Tôi đã vô tình nhấn Cmd + Shift + 8 và tôi không thể tìm ra lý do tại sao tất cả mọi thứ đều có thể chọn được "nhiều dòng". Cảm ơn vì phím tắt lệnh!
Robin Jonsson

4
Double <kbd> Ctrl </kbd> không hoạt động với tôi trên IntelliJ Ultimate 2016.1. Tôi phải sử dụng <kbc> Option </kbd> kép, giữ lần nhấn thứ hai, sau đó nhấn các phím mũi tên.
Big McLargeHuge

1
@DaveKennedy Bạn hoàn toàn đúng, Jet Brains đã thay đổi phím tắt mặc định.
Alexander Bogushov

giải pháp ctrl kép là tốt nhất vì nó cho phép tôi giữ tay trên bàn phím
Andrejs

Để thay đổi ánh xạ khóa để thực sự khớp với bất kỳ trình chỉnh sửa nào khác mà bạn sử dụng, hãy đi tới Cài đặt -> Bản đồ phím và trong hộp tìm kiếm bên phải, tìm kiếm "Sao chép con dấu". Nhấp chuột phải vào hành động và chọn "Thêm phím tắt". Nếu nó lưu nó gây ra xung đột, hãy nhấp vào "OK". Sau đó, nó sẽ thêm một lời nhắc khác hỏi bạn có muốn "Xóa" nhiệm vụ khác (có thể là điều bạn muốn) hay "Để lại" nó (cố ý kích hoạt hai việc bằng một phím tắt có vẻ lạ ...) hoặc "Hủy" (tại sao bạn đã nhấn OK trước đó)?
ArtOfWarfare

38

Một cách tiếp cận chỉ dùng bàn phím. Có thể (kể từ phiên bản 13.1) sử dụng phím tắt Alt+ J/ Shift+ Alt+ J( Ctrl+ Gcho OS X) để tạo nhiều dấu mũ. Alt+ Jchọn lần xuất hiện tiếp theo của văn bản đang được chọn và thêm dấu mũ khác.

  1. Chọn dấu chấm phẩy đầu tiên

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

  1. Sau đó nhấn Alt+ Jbốn lần

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

  1. Chỉnh sửa những gì bạn muốn

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

  1. Nhấn Escđể trở về dòng đầu tiên.

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


5
Chúa ơi, tôi đã sống mà không có tính năng này cả năm trời! Cảm ơn rất nhiều!
coffman21

27

Đặt dấu mũ ở cuối

Windows: CTRL + CTRL(Giữ) +↑ / ↓

Máy Mac: option + option(Giữ) + ↑ / ↓.

Để đặt dấu mũ ở cuối hàng: di chuyển dấu mũ lên hàng trên cùng, sao chép xuống dưới cùng và nhấp vào END.

Thay đổi phím nóng nhiều dấu mũ

Để thêm Sơ đồ từ khóa tùy chỉnh, CTRL+ SHIFT+ A, hãy nhập keymapvà nhấp vào Sơ đồ có Settingsdưới dạng văn bản phụ. Tìm kiếm Clone Caret AboveClone Caret Below.

Tôi đã ánh xạ của mình đến ALT+ SHIFT+ ↑ / ↓trên Windows và + ↑ / ↓trên Mac.

Tặng kem

Hãy thử kết hợp giữ của CTRL, SHIFTvà mũi tên để cải thiện sức mạnh lựa chọn.


1
Cảm ơn nhận xét 'END', rất tốt cho các bài tập thông thường vào các biến có độ dài khác nhau.
Keegan 82

1
Đây phải là câu trả lời vì nó là câu trả lời đầy đủ và đúng trọng điểm nhất. +1.
Ariel Mirra

một cách khác là giữ "alt" và tiếp tục nhấn "j", nó sẽ tiếp tục thêm dòng vào vùng chọn nhiều dòng.
gaurav

13

Chế độ cột hoạt động tốt: đầu tiên chọn tất cả các dòng ở chế độ cột, sau đó nhấn KẾT THÚC: mỗi con trỏ sẽ nhảy đến cuối dòng tương ứng.

Trên Linux ( KHÔNG CẦN CHUỘT ):

  1. ALT+ SHIFT+ INSERTđể vào chế độ khối

    đã vào chế độ chỉnh sửa cột

  2. SHIFT + UPhoặc SHIFT + DOWNđể chọn nhiều dòng

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

  3. END để chuyển đến cuối mỗi dòng

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

  4. bây giờ gõ foo, nó sẽ nối nó vào mỗi dòng:

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

  5. Bây giờ bỏ chọn mọi thứ với ESCAPEvà chuyển về chế độ chọn bình thường với ALT + SHIFT + INSERT.


9

Bạn cũng có thể thực hiện lựa chọn khối mã dọc bằng cách nhấp vào con lăn chuộtkéo :

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


8

Chọn lần xuất hiện tiếp theo:

      Alt+J on Windows, Ctrl-G on Mac OS X

Bỏ chọn Sự xuất hiện:

      Alt+Shift+J on Windows, Ctrl-Shift-G on Mac OS X

Chọn tất cả các lần xuất hiện:

      Ctrl+Alt+Shift+J on Windows, Ctrl-Cmd-G on Mac OS X

để tham khảo thêm: link


Vấn đề (left) Alt + Jlà bạn phải chọn mã trước.
ALIZEYN

7

Tôi chỉ sử dụng macro cho những thứ này. Tôi bắt đầu ghi macro, thực hiện một lần, sau đó phát lại macro trên mỗi dòng tôi muốn sửa đổi. Bạn sẽ ngạc nhiên về cách mà bạn có thể nhận được với tính năng ghi / phát lại macro.


Loại bỏ macro có thể rất hữu ích để thực hiện những loại thay đổi này. Cách bạn mô tả nó chính xác là những gì tôi sẽ làm nếu tôi thực hiện những thay đổi này bên trong trình chỉnh sửa Zeus.
jussij 12/08/09

Nếu tất cả các dòng được nhóm lại với nhau như vậy, sau đó ghi lại macro để cũng di chuyển con trỏ đến dòng tiếp theo, sau đó bạn chỉ cần bắt đầu chạy macro trên dòng đầu tiên và lặp lại nhiều lần tùy ý.
weiji 14/09/09

Làm thế nào để bạn có nghĩa là bạn có thể "lặp lại bao nhiêu lần bạn muốn"? Có cách nào để tự động lặp lại macro không?
pypmannetjies

Chỉnh sửa-> Macro-> Phát lại Macro cuối cùng. Tôi đã ánh xạ đến F12, nhưng tôi có ràng buộc khóa không chuẩn. Tôi thực hiện macro một lần và bắt đầu đánh mạnh F12 nhiều lần.
Chris Kessel

macro là tốt, nhưng nếu tôi sử dụng ideavim trên IntelliJ, các macro không thể giải quyết shortcut của vim
A Di Đà

5

Tôi đã mất một lúc để tìm hiểu, nhưng trên máy Mac, bạn có thể nhấn đúp Option(nhấn một lần, thả ra, nhấn lại, giữ nguyên) và sử dụng phím Up/ Downđể tạo / xóa dấu mũ theo ý muốn.

Bạn cũng có thể giữ Shift+ Optionvà nhấp để tạo / xóa dấu mũ tại các điểm cụ thể.


Điều này thật tuyệt nhưng có cách nào để làm điều này và chọn tất cả các cách xuống cuối tệp không? Nếu không, tôi phải cuộn qua toàn bộ nội dung bằng cách sử dụng arrow và chúng tôi có một số tệp lớn.
Jackie


3

Trong trường hợp này, bạn cũng có thể chỉ cần chọn đoạn mã mà bạn muốn thực hiện việc này và thực hiện thay thế nó. Thay:

";

bằng:

" + "foo";

Vì vậy, trong trường hợp bạn không biết: Nếu bạn đã chọn văn bản trong khi thực hiện thay thế (Ctrl + R hoặc Cmd + R), nó sẽ chỉ áp dụng cho đoạn văn bản đã chọn.


2

Giữ ALT và sử dụng chuột để nhấp và kéo




1

Đối với các phiên bản mới hơn, hãy sử dụng: Alt+ Shift+Insert


1
hoạt động hoàn hảo! cảm ơn @Meysam
gaurav

một cách khác là giữ "alt" và tiếp tục nhấn "j", nó sẽ tiếp tục thêm dòng vào vùng chọn nhiều dòng.
gaurav

0

Những gì tôi thường sử dụng (NetBeans, nhưng tôi tin rằng nó đơn giản để sử dụng trong bất kỳ IDE nào) là find&replace.

Bạn chỉ cần tìm ;\nvà thay thế nó, + $foo;\nsau đó bạn không áp dụng cho TẤT CẢ các dòng nhưng bạn đặt con trỏ trên dòng đầu tiên và bạn chỉ cần nhấn nút "thay thế" (tùy thuộc vào IDE của bạn, tôi cho là) ​​7 lần để thay đổi 7 dòng ngay lập tức. Dễ dàng và đơn giản và nó phải được thực hiện với IDE cơ bản nhất và nâng cao nhất mà bạn có thể tìm thấy.

CHỈNH SỬA: Trong IntelliJ (không biết nó có hoạt động trong các IDE khác không), bạn có thể sử dụng tìm kiếm và thay thế regexp của mình để chỉ lựa chọn để bạn thực sự có thể sử dụng "thay thế tất cả"


Tất nhiên có những trường hợp bạn không thể áp dụng phương pháp này, khi các dòng hoàn toàn khác nhau hoặc một cái gì đó, nhưng tôi nghĩ rằng bạn không thể làm gì nhiều với tình huống này ngay cả với các phương pháp nâng cao.
Srneczek

Vậy tại sao -1? Tôi đã trả lời câu hỏi mà anh ấy hỏi. -1 câu hỏi nếu bạn nghĩ nó ngu ngốc, không phải đáp án chính xác. Thành thật mà nói, câu trả lời được chấp nhận với macro là phương pháp chậm hơn.
Srneczek


0

Tất cả câu trả lời trên đều tuyệt vời, nhưng nếu bạn muốn chỉnh sửa nhiều dòng ở cuối dòng thì bạn phải nhấn phím "Kết thúc" trong khi lựa chọn nhiều dòng của bạn đang hoạt động.

Đối với Mac Chuỗi lệnh sẽ là:

shift option click # chọn một tập hợp các dòng

command right arrow # đi đến cuối dòng

Điều này sẽ thực hiện chọn nhiều dòng ở cuối dòng và bạn có thể chỉnh sửa nó theo yêu cầu

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.