Hentikan penekanan tombol spasi agar tidak memicu pelengkapan otomatis di Eclipse

86

Memperbarui

Ini telah diperbaiki pada Eclipse 2018-12 . Perilaku ini masih default, tetapi dapat dikonfigurasi secara nonaktif - lihat jawaban yang diterima untuk mengetahui caranya

Saya akan meninggalkan pertanyaan seperti itu untuk anak cucu, dan untuk mereka yang menggunakan versi Eclipse sebelumnya


Di Eclipse, saya telah mengaktifkan saran gaya Intellisense untuk Java dengan masuk ke

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

dan pengaturan berikut ini

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

sumber = Eclipse Intellisense?

Ini bekerja dengan sangat baik, terlepas dari satu masalah yang mengganggu. Saat saya menekan spacebar, token yang sedang diketik dilengkapi secara otomatis dengan apa pun yang ada di bagian atas daftar saran. Cukup adil, kecuali bahwa terkadang saya akan mengetik nama kelas / variabel dengan pencocokan hukum yang sama persis, tetapi ini tidak akan muncul sebagai saran teratas. Jadi ketika saya secara alami menekan spacebarEclipse menyisipkan sesuatu yang benar-benar salah.

EG setelah mengetik Cookiesaya akan memukul spacebardan mendapatkan CookieMonster.

Ini sepertinya bug, dan cukup sering terjadi sehingga mengganggu, tetapi meskipun demikian, saya tidak ingin spacebarmemicu pelengkapan otomatis secara umum . Saya mungkin ingin mengetikkan nama variabel yang belum dideklarasikan, atau yang serupa. Saya ingin menggunakan pelengkapan otomatis sebagai alat bantu, tetapi pengetikan alami saya harus selalu menjadi prioritas di atasnya.

Saya ingin berhenti spacebarmemicu pelengkapan otomatis, dan kembali menggunakan enter, atau lebih baik lagi memicu pelengkapan otomatis dengan customkunci yang tidak digunakan dalam pengetikan biasa. Apakah semua ini mungkin?

Saya telah bermain-main dengan semua pengaturan di Content Assist tetapi tidak berhasil. Googling pertanyaan hanya mengembalikan banyak hasil tentang menonaktifkan fitur pelengkapan otomatis.


Masalah ini diperbaiki dari Eclipse 2018-12 [4.10] lihat jawaban yang diterima

Ini ada di semua versi sebelumnya, yaitu 2018-09 [4.9], Photon [4.8], Oxygen [4.7], Neon [4.6], dll.

davnicwil.dll
sumber
+1 Saya baru saja berjuang dengan masalah yang sama ... apakah beruntung menyelesaikan ini? Sangat mengganggu untuk menekan spasi dan mendapatkan sesuatu yang tidak Anda inginkan (Anda tidak memilihnya!) ... Ini mungkin bagus untuk "Deklarasi tipe", tetapi untuk "nama variabel" tidak masuk akal.
emgsilva
Sayangnya tidak. Apakah Anda tahu jika masalah yang sama ada di versi terbaru Kepler (4.3)? Saya belum memutakhirkan tetapi jika demikian saya akan memperbarui pertanyaan
davnicwil
3
Sayangnya perilaku yang sama terjadi di Kepler (4.3) ... Sangat disayangkan. Saya sangat suka aktivasi otomatis itu tetapi sangat menjengkelkan karena membuat pilihan seperti itu dalam beberapa situasi. Solusi sementara saya adalah meningkatkan sedikit waktu aktivasi, sehingga saya menulis sebagian besar nama variabel baru ... tetapi ini tidak selalu berfungsi. Saya akan meneliti lebih jauh masalah ini, dan mungkin melaporkan ini ke Eclipse, karena menurut saya ini adalah bug, bukan fitur.
emgsilva
kemungkinan duplikat stackoverflow.com/questions/7371618/… (menunjukkan bahwa Indigo juga sudah berperilaku seperti ini)
herman
6
Dilihat dari jumlah suara yang diberikan untuk pertanyaan ini, dan kurangnya suara untuk jawaban, sepertinya Eclipse perlu memperbaikinya!
andrewb

Jawaban:

20

Eclipse 2018-12 sudah ditambal untuk ini!

Sebuah patch untuk Bug 348857 baru-baru ini digabungkan ke proyek Eclipse dan dirilis sebagai bagian dari Eclipse 2018-12 . Anda dapat mendownload versi tersebut di sini .

Anda sekarang memiliki opsi baru untuk menonaktifkan semua pemicu penyisipan selain dari enter, yang akan mencegah spacebarterjadinya pelengkapan otomatis.

Cukup buka Preferensi ... -> Java -> Editor -> Bantuan Konten (atau Jendela -> Preferensi -> Java -> Editor -> Bantuan Konten di Windows) dan pilih Nonaktifkan pemicu penyisipan kecuali 'Enter' , seperti yang ditunjukkan di screenshot di bawah ini: Nonaktifkan preferensi pemicu penyisipan

Pyves
sumber
1
Luar biasa, terima kasih banyak. Saya menambahkan judul ke jawaban Anda sehingga orang melihat dengan jelas itu untuk versi saat ini. Jawaban lain sudah ketinggalan zaman.
callmebob
1
@Pyves Butuh beberapa saat untuk menerima jawaban yang lebih baru ini, maaf, tapi saya tidak menggunakan Eclipse lagi dan tidak sempat untuk memverifikasinya. Pokoknya, ya, penampilan ini seperti itu definitif memecahkan masalah dan aku benar-benar senang itu telah diselesaikan lebih dari 6 tahun pada!
davnicwil
Adakah yang mendapatkan masalah di mana penekanan pemicu tidak berfungsi di dalam tampilan Debug Shell? Bagi saya, bilah spasi memicu pelengkapan otomatis. (Saya pada Juni 2019)
William Dutton
@William Dutton mungkin sesuatu untuk ditandai dalam laporan bug terpisah.
Pyves
26

Ada solusi pada pelacak masalah untuk ini. Salin toples di folder eclipse / dropins. Dengan ruang restart berikutnya dinonaktifkan sebagai pemicu pelengkapan otomatis.

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

Eclipse 12-2018 dan yang lebih baru: Ini berfungsi secara native, periksa jawaban Pyves.

Pascalius
sumber
2
Kelihatannya keren, tapi .. tidak berhasil untuk saya di Eclipse Juno - tidak ada perubahan perilaku, bilah spasi masih mengaktifkan pelengkapan otomatis. Apakah ini berhasil untuk Anda di Kepler? Di mana tombol toolbar / item menu untuk beralih alat yang disebutkan di utas bug?
davnicwil
1
Ya, bekerja untuk saya di Kepler Service Release 1. Namun saya juga tidak melihat item toolbar.
Pascalius
Ini tidak berfungsi untuk saya di Eclipse Luna SR2 (4.4.2 - Build Id: 20150219-0600).
BrainSlugs83
Saya baru saja menyiapkan plug-in dengan sangat cepat (di bawah ini dalam jawaban @ AndrewXu tentang menulis plug-in) yang mengubah perilaku di Eclipse Luna untuk hanya menerima Tab dan Enter sebagai kunci penyelesaian intelli-sense.
BrainSlugs83
1
@Pascalius terima kasih atas jawaban Anda yang untuk waktu yang lama adalah yang terbaik, tetapi sekarang Eclipse telah memperbaikinya dan membuatnya dapat dikonfigurasi secara native. Ini ditunjukkan dalam jawaban yang lebih baru, jadi saya telah menerimanya karena sekarang cara terbaik untuk menyelesaikan masalah.
davnicwil
7

Gunakan versi SDK dari gerhana

1. buka Plug-in Lihat dan temukan org.eclipse.jface.text, klik kanan, pilih impor sebagai Proyek Sumber. Setelah diimpor, Anda menemukannya di ruang kerja Anda.

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

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

mengubah

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

3. Ekspor org.eclipse.jface.text

Klik kanan folder proyek org.eclipse.jface.text, pilih ekspor -> Plugin dan fragmen yang dapat diterapkan, selanjutnya, tujuan pilih file arsip, selesai. Ganti yang ada di eclipse / plugins dengan yang Anda buat.

Andrew Xu
sumber
2
Bagi mereka yang bertanya-tanya bagaimana cara membuka tampilan ini, buka "Window" -> "Show View" -> "Other ..." dan di kotak teks filter mulailah mengetik "plug" dan kemudian pilih "Plug-in" dari kotak di bawah dan tekan "OK".
BrainSlugs83
Juga, jika Anda mencari pengalaman yang lebih mirip Visual Studio, saya sarankan untuk mengomentari blok itu seluruhnya (blok default), mengomentari blok '\ t', dan kemudian menemukan blok yang menangani '\ r' dan '\ n' (tepat di atas keduanya), dan menambahkan '\ t' padanya. - Ini akan memberi Anda penyelesaian tab. :-)
BrainSlugs83
(Bagi mereka yang tidak ingin melalui semua masalah ini, ini milik saya untuk versi 64-bit Eclipse Luna SR2 4.4.2: 1drv.ms/1GZhJPq - ingatlah perubahan yang saya sebutkan di atas.)
BrainSlugs83
@ BrainSlugs83 Jika Anda dapat a) memposting kode ke github atau b) tambahkan "." untuk pemicu penyelesaian, itu akan luar biasa.
lakemalcom
Mengapa Anda menggunakan, 0x20bukan ' '?
Dana Gugatan Monica
3

Spasi telah menjadi kunci untuk memilih pelengkapan otomatis bahkan di Indigo. Sepengetahuan saya, ini tidak dapat dikonfigurasi. Sebenarnya, mungkin itulah sebabnya penundaan itu ada.

Saya sarankan menyetel penundaan ke beberapa nilai optimal yang memungkinkan Anda mengetik hal-hal seperti dengan private void ...nyaman tanpa memicu saran untuk privatedan void. Kemudian jika Anda mendapat saran karena Anda menunggu terlalu lama, tekan Escape untuk membatalkan Content Assist.

herman
sumber
Saya hanya berhasil terbatas karena meningkatkan penundaan.
Raedwald
0

Konfigurasi yang sama dengan davnicwil, masalah yang sama, masih di eclipse 4.4.

Solusi : Intercept (hook) SHIFT + SPACE (tekan dan tahan) pada (editor-window) eclipse dan ganti dengan ESC, SPACE (sequence). Sekarang Anda saya yang memutuskan antara

  • Pelengkapan Otomatis + SPASI: tekan SPASI saat ada saran otomatis
  • hanya SPASI: tekan kombinasi atau urutan tombol yang telah ditentukan (misalnya SHIFT + SPASI)

Di windows Anda dapat menggunakan http://www.heise.de/download/activaid.html (Anda juga dapat menggunakan AutoHotkey, java native hook, ...)

HowTo dengan ActivAid:

  1. Buka Ac'tivAid, pilih "UserHotkeys"
  2. klik "+", tetapkan deskripsi
  3. klik "jalan pintas", tekan misalnya SHIFT + SPACE
  4. Perintah: "{ESC} {SPACE}" (tanpa tanda kutip)
  5. klik "+", pilih bingkai editor gerhana, tekan ENTER
  6. klik OK, OK di Ac'tivAid

File konfigurasi saya: activAid / settings / ac'tivAid.ini: [UserHotkeys]

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

Anda juga dapat memetakan ulang kunci pada keyboard non-Inggris dengan "HotStrings", misalnya ö -> {, ä->} dll.

pengguna3178008
sumber
0

Akhirnya berhasil.

Coba unduh org.eclipse.jface.text.jar ini dan salin ke folder plugin Anda (Biasanya eclipse / plugin). Jangan lupa buat backup sendiri.

Bekerja di Eclipse Juno.

Jika tautan tidak berfungsi, komentari ini, terima kasih.

cy198706
sumber
MARS1 Eclipse tidak dapat dimulai, java.lang.RuntimeException: Application "org.eclipse.ui.ide.workbench" tidak dapat ditemukan di registri.
Tiina
-3

Anda dapat menonaktifkan aktivasi Otomatis melalui kotak centang di

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

dan mengaktifkan fitur pelengkapan otomatis sesuai permintaan. Tombol pintas default untuk ini adalah

CTRL+Space

giskou.dll
sumber
3
Seluruh masalah adalah saya ingin perilaku aktivasi otomatis, hanya tanpa
bilah
-3

Di Eclipse, buka Window -> Preferences -> General -> Keys dan hapus pengikatan untuk perintah Content Assist.

SpaceTrucker
sumber
1
Itu akan menghilangkan kemungkinan untuk memunculkan saran menggunakan ctrl + Spasi. Yang diinginkan OP adalah cara untuk menonaktifkan pemilihan saran menggunakan bilah spasi. Tidak ada pengikatan kunci untuk itu.
herman