หยุดการกดแป้น Spacebar ไม่ให้ทริกเกอร์การเติมข้อความอัตโนมัติใน Eclipse


86

อัปเดต

นี้ได้รับการแก้ไขใน Eclipse 2018-12 ลักษณะการทำงานนี้ยังคงเป็นค่าเริ่มต้น แต่สามารถกำหนดค่าปิดได้ - ดูคำตอบที่ยอมรับสำหรับวิธีการ

ฉันจะทิ้งคำถามไว้เหมือนเดิมสำหรับคนรุ่นหลังและสำหรับคำถามใน Eclipse เวอร์ชันก่อนหน้า


ใน Eclipse ฉันได้เปิดใช้งานคำแนะนำสไตล์ Intellisense สำหรับ Java โดยไปที่

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

และการตั้งค่าต่อไปนี้

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

แหล่ง = Eclipse Intellisense?

วิธีนี้ใช้งานได้ดีนอกเหนือจากปัญหาที่น่ารำคาญอย่างหนึ่ง เมื่อฉันกดspacebarโทเค็นที่กำลังพิมพ์จะถูกเติมอัตโนมัติด้วยสิ่งที่อยู่ด้านบนของรายการคำแนะนำ พอใช้ยกเว้นว่าบางครั้งฉันจะพิมพ์ชื่อคลาส / ตัวแปรที่ตรงกันตามกฎหมาย แต่จะไม่ปรากฏเป็นคำแนะนำอันดับต้น ๆ ดังนั้นเมื่อฉันตีspacebarEclipse โดยธรรมชาติจะมีบางอย่างผิดปกติ

EGหลังจากพิมพ์Cookieฉันจะตีและได้รับspacebarCookieMonster

นี้ดูเหมือนว่าข้อผิดพลาดและเกิดขึ้นบ่อยครั้งพอที่จะเป็นที่น่ารำคาญ แต่อย่างไรก็ตามเรื่องนี้ฉันไม่ต้องการspacebarที่จะเติมข้อความอัตโนมัติไกทั่วไป ฉันอาจต้องการพิมพ์ชื่อตัวแปรที่ยังไม่ได้ประกาศหรืออะไรที่คล้ายกัน ฉันต้องการที่จะใช้เป็นเครื่องมือในการเติมข้อความอัตโนมัติผู้ช่วย แต่พิมพ์ธรรมชาติของฉันควรเสมอจะมีความสำคัญมากกว่านั้น

ฉันต้องการหยุดทspacebarริกเกอร์การเติมข้อความอัตโนมัติและถอยกลับไปใช้enterหรือดีกว่ายังคงทริกเกอร์การเติมข้อความอัตโนมัติด้วยcustomคีย์ที่ไม่ได้ใช้ในการพิมพ์ทั่วไป สิ่งนี้เป็นไปได้หรือไม่?

ฉันได้เล่นกับการตั้งค่าทั้งหมดในContent Assist แล้ว แต่ก็ไม่มีประโยชน์ Googling คำถามจะส่งกลับผลลัพธ์มากมายเกี่ยวกับการปิดใช้งานคุณสมบัติเติมข้อความอัตโนมัติ


ปัญหานี้ได้รับการแก้ไขตั้งแต่ Eclipse 2018-12 [4.10]ดูคำตอบที่ยอมรับ

มีอยู่ในเวอร์ชันก่อนหน้าทั้งหมดเช่น2018-09 [4.9] โฟตอน [4.8] ออกซิเจน [4.7] นีออน [4.6] ฯลฯ ..


+1 ฉันแค่ต่อสู้กับปัญหาเดียวกันนั้น ... โชคดีไหมในการแก้ปัญหานี้? มันน่ารำคาญมากที่ต้องกดเว้นวรรคและได้รับสิ่งที่คุณไม่ต้องการ (คุณไม่ได้เลือก!) ... นี่อาจจะดีสำหรับ "การประกาศประเภท" แต่สำหรับ "ชื่อตัวแปร" นั้นไม่สมเหตุสมผล
emgsilva

แต่น่าเสียดายที่ไม่ได้. คุณทราบหรือไม่ว่าปัญหาเดียวกันนี้มีอยู่ใน Kepler เวอร์ชันล่าสุด (4.3) หรือไม่? ฉันยังไม่ได้อัปเกรด แต่ถ้าเป็นเช่นนั้นฉันจะอัปเดตคำถาม
davnicwil

3
น่าเสียดายที่พฤติกรรมแบบเดียวกันนี้เกิดขึ้นใน Kepler (4.3) ... น่าเสียดายจริงๆ ฉันชอบมากที่การเปิดใช้งานอัตโนมัติ แต่มันน่ารำคาญจริงๆที่มีการเลือกแบบนี้ในหลาย ๆ สถานการณ์ วิธีแก้ปัญหาชั่วคราวของฉันคือเพิ่มเวลาเปิดใช้งานเล็กน้อยดังนั้นฉันจึงเขียนชื่อตัวแปรใหม่ส่วนใหญ่ ... แต่ก็ไม่ได้ผลเสมอไป ฉันจะค้นคว้าเพิ่มเติมเกี่ยวกับปัญหานี้อีกเล็กน้อยและอาจรายงานเรื่องนี้ต่อ Eclipse เนื่องจากฉันคิดว่ามันเป็นข้อบกพร่องไม่ใช่คุณสมบัติ
emgsilva

เป็นไปได้ที่จะซ้ำกันของstackoverflow.com/questions/7371618/… (แสดงว่าครามก็มีพฤติกรรมเช่นนี้อยู่แล้ว)
herman

6
ตัดสินจากจำนวนโหวตที่มากขึ้นสำหรับคำถามนี้และการไม่ได้รับการโหวตสำหรับคำตอบดูเหมือนว่า Eclipse จะต้องแก้ไขปัญหานี้!
andrewb

คำตอบ:


20

Eclipse 2018-12 ได้รับการแก้ไขแล้ว!

แพทช์สำหรับBug 348,857รวมเมื่อเร็ว ๆ นี้โครงการ Eclipse และได้รับการปล่อยตัวเป็นส่วนหนึ่งของคราส 2018-12 คุณสามารถดาวน์โหลดรุ่นที่นี่

ขณะนี้คุณมีตัวเลือกใหม่ในการปิดใช้งานทริกเกอร์การแทรกทั้งหมดนอกเหนือจากenterซึ่งจะป้องกันไม่ให้spacebarเกิดการเติมข้อความอัตโนมัติ

เพียงไปที่Preferences ... -> Java -> Editor -> Content Assist (หรือWindow -> Preferences -> Java -> Editor -> Content Assistบน Windows) และเลือกปิดการใช้งานทริกเกอร์การแทรกยกเว้น 'Enter'ดังที่แสดงใน ภาพหน้าจอด้านล่าง: ปิดใช้งานการแทรกทริกเกอร์การตั้งค่า


1
ยอดเยี่ยมขอบคุณมาก ฉันเพิ่มส่วนหัวในคำตอบของคุณเพื่อให้ผู้คนเห็นได้ชัดเจนว่าเป็นเวอร์ชันปัจจุบัน คำตอบอื่น ๆ ล้าสมัย
callmebob

1
@Pyves ฉันใช้เวลาสักพักในการยอมรับคำตอบที่ใหม่กว่านี้ขอโทษ แต่ฉันไม่ได้ใช้ Eclipse อีกต่อไปและไม่ได้รับรอบในการตรวจสอบ อย่างไรก็ตามใช่ดูเหมือนว่ามันจะแก้ปัญหาได้อย่างแน่นอนและฉันดีใจมากที่ได้รับการแก้ไขมากว่า 6 ปี!
davnicwil

ใครมีปัญหาที่การปราบปรามทริกเกอร์ไม่ทำงานในมุมมอง Debug Shell? สำหรับฉัน Spacebar กำลังเรียกใช้การเติมข้อความอัตโนมัติ (ฉันอยู่ในเดือนมิถุนายน 2019)
William Dutton

@ วิลเลียมดัตตันอาจมีบางอย่างที่จะตั้งค่าสถานะในรายงานข้อบกพร่องแยกต่างหาก
Pyves

26

มีวิธีแก้ไขในตัวติดตามปัญหาสำหรับสิ่งนี้ คัดลอกjarในโฟลเดอร์ eclipse / dropins ด้วยพื้นที่การรีสตาร์ทครั้งถัดไปจะถูกปิดใช้งานเป็นทริกเกอร์การเติมข้อความอัตโนมัติ

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

Eclipse 12-2018 และใหม่กว่า:ใช้งานได้จริงตรวจสอบคำตอบของ Pyves


2
ดูดีมาก แต่ .. มันไม่ได้ผลสำหรับฉันใน Eclipse Juno - ไม่มีการเปลี่ยนแปลงพฤติกรรม Spacebar ยังคงเปิดใช้งานการเติมข้อความอัตโนมัติ สิ่งนี้ใช้ได้ผลกับคุณใน Kepler หรือไม่? ปุ่มแถบเครื่องมือ / รายการเมนูสำหรับการสลับเครื่องมือที่กล่าวถึงในเธรดข้อบกพร่องอยู่ที่ไหน
davnicwil

1
ใช่ใช้ได้กับฉันใน Kepler Service Release 1 อย่างไรก็ตามฉันไม่เห็นรายการแถบเครื่องมือเช่นกัน
Pascalius

สิ่งนี้ใช้ไม่ได้สำหรับฉันใน Eclipse Luna SR2 (4.4.2 - รหัสรุ่น: 20150219-0600)
BrainSlugs83

ฉันเพิ่งแส้ปลั๊กอินจริงอย่างรวดเร็ว (ด้านล่างในคำตอบของ @ AndrewXu เกี่ยวกับการเขียนปลั๊กอิน) ที่เปลี่ยนพฤติกรรมใน Eclipse Luna ให้ยอมรับเฉพาะ Tab และ Enter เป็นคีย์การเติมเต็มภายใน
BrainSlugs83

1
@Pascalius ขอบคุณสำหรับคำตอบของคุณซึ่งเป็นเวลานานที่ดีที่สุด แต่ตอนนี้ Eclipse ได้แก้ไขสิ่งนี้แล้วและทำให้สามารถกำหนดค่าได้ นี่เป็นคำตอบที่ใหม่กว่าดังนั้นฉันจึงยอมรับคำตอบนั้นแทนเพราะตอนนี้เป็นวิธีที่ดีที่สุดในการแก้ปัญหา
davnicwil

7

ใช้ eclipse เวอร์ชัน SDK

1. เปิดปลั๊กอินดูและค้นหา org.eclipse.jface.text คลิกขวาเลือกนำเข้าเป็น Source Project หลังจากนำเข้าคุณจะพบมันในพื้นที่ทำงานของคุณ

2. ใน src / org / eclipse / jface / text / contentassist / CompletionProposalPopup.java

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

เปลี่ยนไป

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

3. ส่งออก org.eclipse.jface.text

คลิกขวาที่โฟลเดอร์โปรเจ็กต์ของ org.eclipse.jface.text เลือก export -> Deployable plugins and fragments จากนั้นปลายทางเลือกไฟล์ archive เสร็จสิ้น แทนที่อันใน eclipse / plugins ด้วยอันที่คุณสร้าง


2
สำหรับผู้ที่สงสัยว่าจะเปิดมุมมองนี้ได้อย่างไรให้ไปที่ "หน้าต่าง" -> "แสดงมุมมอง" -> "อื่น ๆ ... " และในกล่องข้อความตัวกรองเริ่มพิมพ์ "ปลั๊ก" จากนั้นเลือก "ปลั๊กอิน" จากช่อง ด้านล่างแล้วกด "ตกลง"
BrainSlugs83

นอกจากนี้หากคุณกำลังมองหาประสบการณ์ที่คล้ายกับ Visual Studio ฉันขอแนะนำให้แสดงความคิดเห็นจากบล็อกนั้นทั้งหมด (บล็อกเริ่มต้น) แสดงความคิดเห็นในบล็อก '\ t' จากนั้นค้นหาบล็อกที่จัดการ '\ r' และ '\ n' (อยู่เหนือสองสิ่งนั้น) และเพิ่ม '\ t' เข้าไป - สิ่งนี้จะทำให้แท็บเสร็จสมบูรณ์ :-)
BrainSlugs83

(สำหรับผู้ที่ไม่ต้องการแก้ไขปัญหาทั้งหมดนี่เป็นของฉันสำหรับรุ่น 64 บิตของ Eclipse Luna SR2 4.4.2: 1drv.ms/1GZhJPq - โปรดทราบถึงการเปลี่ยนแปลงที่ฉันกล่าวไว้ข้างต้น)
BrainSlugs83

@ BrainSlugs83 ถ้าคุณทำได้ a) โพสต์รหัสไปที่ github หรือ b) เพิ่ม "." เพื่อให้ทริกเกอร์เสร็จสมบูรณ์นั่นจะยอดเยี่ยมมาก
lakemalcom

ทำไมคุณถึงใช้0x20แทน' '?
คดีของ Fund Monica

3

สเปซบาร์เป็นกุญแจสำคัญในการเลือกการเติมข้อความอัตโนมัติแม้ในคราม สำหรับความรู้ของฉันสิ่งนี้ไม่สามารถกำหนดค่าได้ ในความเป็นจริงนั่นอาจเป็นสาเหตุที่ทำให้เกิดความล่าช้า

ผมขอแนะนำการตั้งค่าความล่าช้าเป็นค่าที่ดีที่สุดบางอย่างที่ช่วยให้คุณพิมพ์สิ่งที่ต้องการprivate void ...ได้อย่างสะดวกสบายโดยไม่ต้องเรียกคำแนะนำสำหรับการและprivate voidจากนั้นในกรณีที่คุณได้รับคำแนะนำเนื่องจากรอนานเกินไปให้กด Escape เพื่อยกเลิกการช่วยเหลือเนื้อหา


ฉันประสบความสำเร็จเพียง จำกัด จากการเพิ่มความล่าช้า
Raedwald

0

คอนฟิกูเรชันเดียวกันกับ davnicwil ปัญหาเดียวกันยังคงอยู่ใน eclipse 4.4

วิธีแก้ไข : สกัดกั้น (hook) SHIFT + SPACE (กดค้างไว้) บน (หน้าต่างตัวแก้ไข) คราสและแทนที่ด้วย ESC, SPACE (ลำดับ) ตอนนี้คุณตัดสินใจของฉันระหว่าง

  • เติมข้อความอัตโนมัติ + SPACE: กด SPACE เมื่อมีการแนะนำอัตโนมัติ
  • เพียงแค่ SPACE: กดคีย์ผสมที่กำหนดไว้ล่วงหน้าหรือลำดับ (เช่น SHIFT + SPACE)

บน windows คุณอาจใช้http://www.heise.de/download/activaid.html (คุณยังสามารถใช้ AutoHotkey, java native hook, ... )

HowTo กับ ActivAid:

  1. เปิด Ac'tivAid เลือก "UserHotkeys"
  2. คลิกที่ "+" กำหนดคำอธิบาย
  3. คลิกที่ "ทางลัด" กดเช่น SHIFT + SPACE
  4. คำสั่ง: "{ESC} {SPACE}" (ไม่มีเครื่องหมายอัญประกาศ)
  5. คลิก "+" เลือกเฟรมตัวแก้ไขคราสกด ENTER
  6. คลิกตกลงตกลงใน Ac'tivAid

ไฟล์กำหนดค่าของฉัน: activAid / settings / ac'tivAid.ini: [UserHotkeys]

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

คุณยังสามารถทำการแมปคีย์บนคีย์บอร์ดที่ไม่ใช่ภาษาอังกฤษด้วย "HotStrings" เช่นö -> {, ä->} เป็นต้น


0

ในที่สุดก็ใช้งานได้

ลองดาวน์โหลดorg.eclipse.jface.text.jarนี้แล้วคัดลอกไปยังโฟลเดอร์ปลั๊กอินของคุณ (โดยทั่วไปคือ eclipse / plugin) อย่าลืมสำรองข้อมูลของคุณเอง

ทำงานบน Eclipse Juno

หากลิงก์ใช้ไม่ได้โปรดแสดงความคิดเห็นเกี่ยวกับสิ่งนี้ขอบคุณ


MARS1 Eclipse ไม่สามารถเริ่มทำงานได้ไม่พบ java.lang.RuntimeException: Application "org.eclipse.ui.ide.workbench" ในรีจิสทรี
Tiina

-3

คุณสามารถปิดใช้งานการเปิดใช้งานอัตโนมัติผ่านช่องทำเครื่องหมายใน

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

และเปิดใช้งานคุณสมบัติเติมข้อความอัตโนมัติตามต้องการ ฮ็อตคีย์เริ่มต้นสำหรับสิ่งนี้คือ

CTRL+Space


3
ปัญหาทั้งหมดคือฉันต้องการพฤติกรรมการเปิดใช้งานอัตโนมัติเพียงแค่ไม่มี Spacebar ทำการเติมข้อความอัตโนมัติ
davnicwil

-3

ใน Eclipse ไปที่ Window -> Preferences -> General -> Keys และลบการผูกสำหรับคำสั่ง Content Assist


1
นั่นจะลบความเป็นไปได้ที่จะแสดงคำแนะนำโดยใช้ ctrl + Space สิ่งที่ OP ต้องการคือวิธีปิดการเลือกคำแนะนำโดยใช้สเปซบาร์ ไม่มีการผูกคีย์สำหรับสิ่งนั้น
herman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.