Ngừng nhấn phím cách trên phím cách để kích hoạt tính năng tự động hoàn thành trong Eclipse


86

Cập nhật

Điều này đã được khắc phục trong Eclipse 2018-12 . Hành vi này vẫn là mặc định, nhưng có thể được định cấu hình tắt - hãy xem câu trả lời được chấp nhận để biết cách

Tôi sẽ để lại câu hỏi cho hậu thế và cho những người trên các phiên bản trước của Eclipse


Trong Eclipse, tôi đã bật các đề xuất kiểu intellisense cho Java bằng cách đi tới

Window -> Preferences -> Java/Editor/Content Assist

và thiết lập những điều sau

Auto activation delay (ms) -> 0
Auto activation triggers for Java -> .(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

source = Eclipse Intellisense?

Điều này hoạt động tuyệt vời, ngoại trừ một vấn đề khó chịu. Khi tôi nhấn spacebar, mã đang được nhập sẽ tự động hoàn thành với bất kỳ thứ gì ở đầu danh sách đề xuất. Đủ công bằng, ngoại trừ việc đôi khi tôi sẽ nhập tên lớp / tên biến có khớp hợp pháp chính xác, nhưng điều này sẽ không xuất hiện như đề xuất hàng đầu. Vì vậy, khi tôi tự nhiên nhấn spacebarEclipse chèn một cái gì đó hoàn toàn sai.

EG sau khi gõ Cookietôi sẽ đánh spacebarvà nhận được CookieMonster.

Điều này có vẻ giống như một lỗi và xảy ra thường xuyên đủ để gây khó chịu, nhưng ngay cả khi điều này, tôi không muốn spacebarkích hoạt tính năng tự động hoàn thành nói chung . Tôi có thể muốn nhập một tên biến chưa được khai báo hoặc một cái gì đó tương tự. Tôi muốn sử dụng tính năng tự động hoàn thành như một công cụ trợ giúp, nhưng việc gõ phím tự nhiên của tôi nên luôn được ưu tiên hơn.

Tôi muốn ngừng spacebarkích hoạt tính năng tự động hoàn thành và quay lại sử dụng enterhoặc tốt hơn là vẫn kích hoạt tính năng tự động hoàn thành bằng một customphím không được sử dụng trong đánh máy thông thường. Có thể nào trong số này không?

Tôi đã thử với tất cả các cài đặt trong Hỗ trợ nội dung nhưng không có kết quả. Googling câu hỏi chỉ trả về một loạt kết quả về việc tắt tính năng tự động hoàn thành.


Sự cố này được khắc phục từ Eclipse 2018-12 [4.10] xem câu trả lời được chấp nhận

Nó có mặt trong tất cả các phiên bản trước, tức là 2018-09 [4.9], Photon [4.8], Oxy [4.7], Neon [4.6], v.v.


+1 Tôi vừa chiến đấu với chính vấn đề đó ... có may mắn nào giải quyết được vấn đề này không? Rất khó chịu khi nhấn dấu cách và nhận được một cái gì đó mà bạn không muốn (bạn không chọn nó!) ... Điều này có thể tốt cho "Khai báo kiểu", nhưng đối với "tên biến" là không hợp lý.
emgsilva

Không may măn. Bạn có biết vấn đề tương tự có tồn tại trong phiên bản mới nhất Kepler (4.3) không? Tôi chưa nâng cấp nhưng nếu vậy tôi sẽ cập nhật câu hỏi
davnicwil

3
Thật không may rằng hành vi rất giống nhau diễn ra trong Kepler (4.3) ... Nó thực sự là một điều đáng tiếc. Tôi rất thích tính năng tự động kích hoạt nhưng thực sự rất khó chịu khi nó phải lựa chọn như vậy trong một số tình huống. Giải pháp tạm thời của tôi là tăng một chút thời gian kích hoạt, để tôi viết hầu hết tên biến mới ... nhưng điều này không hoạt động luôn. Tôi sẽ nghiên cứu kỹ hơn một chút về vấn đề này và có thể sẽ báo cáo vấn đề này cho Eclipse, vì tôi nghĩ rằng đó là một lỗi không phải là một tính năng.
emgsilva

bản sao có thể có của stackoverflow.com/questions/7371618/… (cho biết Indigo cũng đã hoạt động như vậy)
herman

6
Đánh giá dựa trên số phiếu bầu cho câu hỏi này và thiếu phiếu bầu cho các câu trả lời, có vẻ như Eclipse cần khắc phục điều này!
andrewb

Câu trả lời:


20

Eclipse 2018-12 đã được vá cho điều này!

Bản vá cho Lỗi 348857 gần đây đã được hợp nhất với dự án Eclipse và được phát hành như một phần của Eclipse 2018-12 . Bạn có thể tải xuống phiên bản đó tại đây .

Giờ đây, bạn có một tùy chọn mới để vô hiệu hóa tất cả các trình kích hoạt chèn enter, điều này sẽ ngăn không spacebarcho tự động hoàn thành.

Chỉ cần đi tới Tùy chọn ... -> Java -> Trình chỉnh sửa -> Hỗ trợ nội dung (hoặc Cửa sổ -> Tùy chọn -> Java -> Trình chỉnh sửa -> Hỗ trợ nội dung trên Windows) và chọn Tắt kích hoạt chèn ngoại trừ 'Enter' , như được hiển thị trong ảnh chụp màn hình bên dưới: Tắt tùy chọn trình kích hoạt chèn


1
Tuyệt vời, cảm ơn rất nhiều. Tôi đã thêm tiêu đề vào câu trả lời của bạn để mọi người thấy rõ nó dành cho các phiên bản hiện tại. Các câu trả lời khác đã lỗi thời.
callmebob 13/02/19

1
@Pyves Tôi đã mất một lúc để chấp nhận câu trả lời mới hơn này, xin lỗi, nhưng tôi không sử dụng Eclipse nữa và không hoàn thành việc xác minh nó. Dù sao, vâng, điều này có vẻ như nó đã giải quyết dứt điểm vấn đề và tôi thực sự vui mừng vì nó đã được giải quyết sau hơn 6 năm!
davnicwil

Có ai gặp sự cố trong đó ngăn chặn kích hoạt không hoạt động bên trong chế độ xem Debug Shell không? Đối với tôi phím cách đang kích hoạt tính năng tự động hoàn thành. (Tôi ở vào tháng 6 năm 2019)
William Dutton

@William Dutton có thể là một cái gì đó để gắn cờ trong một báo cáo lỗi riêng biệt.
Pyves

26

Có một giải pháp trên trình theo dõi vấn đề cho việc này. Sao chép jar trong thư mục eclipse / dropins. Với không gian khởi động lại tiếp theo được tắt dưới dạng trình kích hoạt tự động hoàn thành.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=348857

Eclipse 12-2018 và mới hơn: Tính năng này đang hoạt động nguyên bản, hãy kiểm tra câu trả lời của Pyves.


2
Trông tuyệt vời nhưng .. nó không hoạt động với tôi trong Eclipse Juno - không có thay đổi về hành vi, phím cách vẫn kích hoạt tính năng tự động hoàn thành. Điều này có hiệu quả với bạn ở Kepler không? Nút / mục menu trên thanh công cụ để chuyển đổi công cụ được đề cập trong chuỗi lỗi ở đâu?
davnicwil

1
Có, phù hợp với tôi trong Bản phát hành dịch vụ Kepler 1. Tuy nhiên, tôi cũng không thấy các mục trên thanh công cụ.
Pascalius

Điều này không hoạt động đối với tôi trong Eclipse Luna SR2 (4.4.2 - Id bản dựng: 20150219-0600).
BrainSlugs83

Tôi vừa tạo ra một trình cắm nhanh thực sự (bên dưới trong câu trả lời của @ AndrewXu về cách viết các trình cắm thêm) thay đổi hành vi trong Eclipse Luna để chỉ chấp nhận Tab và Enter làm các phím hoàn thành theo cảm giác thông minh.
BrainSlugs83

1
@Pascalius cảm ơn bạn vì câu trả lời của bạn trong một thời gian dài là câu trả lời tốt nhất, nhưng bây giờ Eclipse đã sửa lỗi này và làm cho nó có thể định cấu hình nguyên bản. Điều này được chỉ ra trong một câu trả lời mới hơn, vì vậy tôi đã chấp nhận câu trả lời đó thay vì đó là cách tốt nhất để giải quyết vấn đề.
davnicwil

7

Sử dụng phiên bản SDK của eclipse

1. mở Plug-in View và tìm org.eclipse.jface.text, nhấp chuột phải, chọn import as Source Project. Sau khi nhập, bạn tìm thấy nó trong không gian làm việc của mình.

2. trong src / org / eclipse / jface / text / contentassist / CompletionProposalPopup.java

char[] triggers = t.getTriggerCharacter();
if(contains(triggers,key))

thay đổi thành

if(key!='='&&key!=0x20&&contains(triggers,key))

3. Xuất org.eclipse.jface.text

Nhấp chuột phải vào thư mục dự án của org.eclipse.jface.text, chọn xuất -> Phần bổ sung và phân đoạn có thể triển khai, tiếp theo, đích chọn tệp lưu trữ, kết thúc. Thay thế cái trong eclipse / plugin bằng cái bạn tạo.


2
Đối với những người tự hỏi làm thế nào để mở chế độ xem này, hãy đi tới "Cửa sổ" -> "Hiển thị Chế độ xem" -> "Khác ..." và trong hộp văn bản bộ lọc, bắt đầu nhập "plug" và sau đó chọn "Plug-in" từ hộp bên dưới và nhấn "OK".
BrainSlugs83

Ngoài ra, nếu bạn đang tìm kiếm một trải nghiệm giống Visual Studio hơn, tôi khuyên bạn chỉ nên nhận xét hoàn toàn khối đó (khối mặc định), nhận xét khối '\ t', sau đó tìm khối xử lý '\ r' và '\ n' (ngay trên hai cái đó) và thêm '\ t' vào nó. - Điều này sẽ cung cấp cho bạn hoàn thành tab. :-)
BrainSlugs83

(Đối với những người không muốn gặp phải tất cả những rắc rối này, đây là phiên bản 64-bit của Eclipse Luna SR2 4.4.2: 1drv.ms/1GZhJPq - hãy ghi nhớ những thay đổi tôi đã đề cập ở trên.)
BrainSlugs83

@ BrainSlugs83 Nếu bạn có thể a) đăng mã lên github hoặc b) thêm "." để hoàn thành kích hoạt, điều đó sẽ thật tuyệt vời.
Lakemalcom

Tại sao bạn lại sử dụng 0x20thay vì ' '?
Vụ kiện của Fund Monica vào

3

Phím cách là một phím để chọn tự động hoàn thành ngay cả trong Indigo. Theo hiểu biết của tôi, điều này không thể được định cấu hình. Trên thực tế, đó có lẽ là lý do tại sao sự chậm trễ tồn tại.

Tôi khuyên bạn nên đặt độ trễ thành một số giá trị tối ưu cho phép bạn nhập những thứ như private void ...thoải mái mà không cần kích hoạt đề xuất cho privatevoid . Sau đó, trong trường hợp bạn nhận được đề xuất vì đã đợi quá lâu, hãy nhấn Escape để hủy Hỗ trợ nội dung.


Tôi chỉ thành công hạn chế từ việc tăng độ trễ.
Raedwald

0

Cấu hình tương tự như davnicwil, cùng một vấn đề, vẫn còn trên eclipse 4.4.

Giải pháp : Đánh chặn (móc) SHIFT + SPACE (nhấn và giữ) trên (cửa sổ biên tập) nhật thực và thay thế nó bằng ESC, SPACE (chuỗi). Bây giờ bạn quyết định của tôi giữa

  • Tự động hoàn thành + SPACE: nhấn SPACE khi xuất hiện tự động đề xuất
  • just SPACE: nhấn tổ hợp phím hoặc chuỗi được xác định trước (ví dụ: SHIFT + SPACE)

Trên windows, bạn có thể sử dụng http://www.heise.de/download/activaid.html (bạn cũng có thể sử dụng AutoHotkey, java native hook, ...)

HowTo với ActivAid:

  1. Mở Ac'tivAid, chọn "UserHotkeys"
  2. nhấp vào "+", đặt mô tả
  3. nhấp vào "đường tắt", nhấn ví dụ SHIFT + SPACE
  4. Lệnh: "{ESC} {SPACE}" (không có dấu ngoặc kép)
  5. nhấp vào "+", chọn khung biên tập nhật thực, nhấn ENTER
  6. bấm OK, OK trong Ac'tivAid

Tệp cấu hình của tôi: activAid / settings / ac'tivAid.ini: [UserHotkeys]

Hotkey11=+Space
Path11=<Send>{ESC}{SPACE}
Description11=Eclipse Shift+Space -> Esc,Space
Category11=
Application11=ahk_class SWT_Window0

Bạn cũng có thể sửa lại các phím trên bàn phím không phải tiếng Anh bằng "HotStrings", ví dụ: ö -> {, ä->}, v.v.


0

Cuối cùng cũng giải quyết được.

Hãy thử tải xuống org.eclipse.jface.text.jar này và sao chép nó vào thư mục plugin của bạn (Điển hình là eclipse / plugin). Đừng quên sao lưu một cái của riêng bạn.

Hoạt động trên Eclipse Juno.

Nếu liên kết không hoạt động, hãy bình luận về điều này, cảm ơn.


Không thể khởi động MARS1 Eclipse, java.lang.RuntimeException: Không thể tìm thấy ứng dụng "org.eclipse.ui.ide.workbench" trong sổ đăng ký.
Tiina

-3

Bạn có thể tắt kích hoạt Tự động thông qua hộp kiểm trong

Window -> Preferences -> Java/Editor/Content Assist

và kích hoạt tính năng tự động hoàn thành theo yêu cầu. Phím nóng mặc định cho việc này là

CTRL+Space


3
Toàn bộ vấn đề là tôi muốn các hành vi kích hoạt tự động, chỉ cần không spacebar làm autocomplete
davnicwil

-3

Trong Eclipse, đi tới Window -> Preferences -> General -> Keys và loại bỏ ràng buộc cho lệnh Content Assist.


1
Điều đó sẽ loại bỏ khả năng hiển thị các đề xuất bằng cách sử dụng ctrl + Space. Những gì OP muốn là một cách để vô hiệu hóa lựa chọn đề xuất bằng cách sử dụng phím cách. Không có ràng buộc chính nào tồn tại cho điều đó.
herman,
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.