ฉันจะสร้างช่องว่างโดยไม่ตั้งใจได้อย่างไรก่อนเปิดวงเล็บปีกกาแบบหยิก


20

ฉันรู้ว่านี่เป็นคำถามที่แปลกและอาจไม่ได้เป็นฟอรัมที่เหมาะสมในการโพสต์ แต่นี่เป็นปัญหามาหลายปีแล้ว

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

สิ่งนี้เกิดขึ้นเมื่อฉันเขียน () {

สิ่งนี้นำไปสู่ข้อบกพร่องที่เป็นขุยลึกลับ ส่วนคำสั่ง CSS ที่ไม่ใช้ จนกว่าฉันจะจำสิ่งนี้อาจเป็นได้

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

เรื่องนี้เกิดขึ้นกับฉันอย่างน้อยใน Ubuntu 14.04, 16.04 และ mac os x

:set list ไม่เปิดเผย

ฉันกำลังใช้รูปแบบแป้นพิมพ์ภาษาฝรั่งเศส - แคนาดาหมายถึงอักขระที่ใช้วงเล็บปีกกาทำได้โดยการกด alt + `

ฉันเหนื่อยมากกับปัญหาที่เกิดขึ้นมันไม่บ่อยพอที่ฉันจะลืมมันไปเรื่อย ๆ

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


คุณสามารถเปลี่ยนการ
โยงคีย์

อึแบบนี้เป็นเหตุผลว่าทำไมในที่สุดฉันก็เปลี่ยนเลย์เอาต์ของฉันอย่างถาวรจากสวีเดนเป็นอเมริกัน ฉันอาจใช้เวลาในการพิมพ์ภาษาอังกฤษ + C + Perl + Bash + Vim มากกว่าที่ฉันจะพิมพ์ตัวอักษรå, äและöตลกของเรา สิ่งเหล่านี้ถูกสร้างขึ้นอย่างง่ายดายโดยใช้คีย์การเขียน
ไปป์

คำตอบ:


24

คนอื่น ๆ ได้อยู่แล้วให้ทำงาน arounds แต่เป็นเหตุผลว่าทำไมมันเกิดขึ้นฉันเดิมพันที่คุณกำลังตั้งใจกด+AltSpace

ฉันใช้ Xubuntu ด้วยแป้นพิมพ์ภาษาฟินแลนด์ 105 คีย์ layout ตัวเองดังนั้นสำหรับผมแล้วพิมพ์{วิธีการกด+AltGr 7ฉันเพิ่งทดสอบอย่างรวดเร็วใน xfce4-terminal (บนบรรทัดคำสั่ง bash) และการกดAltGr+ Spaceทำให้เกิดช่องว่างไม่แตก (U + 00A0)

ฉันพนันได้เลยว่าสิ่งที่เกิดขึ้นคือคุณกำลังกดปุ่มเพื่อAltรอพิมพ์รั้งและบางครั้งก็เกิดขึ้นก่อนที่คุณจะกด space bar ทำให้เกิดพื้นที่ว่างเปล่า และเนื่องจากมันดูเหมือนกับพื้นที่ปกติคุณไม่ได้ตระหนักว่ามันเกิดขึ้นก่อนที่จะมีอะไรบางอย่างแตกอย่างลึกลับทำให้ยากที่คุณจะสังเกตเห็นว่ามันเกิดขึ้น


Oooh ฉันจะลองที่นี่ในวันพรุ่งนี้ ฉันมักจะเว้นช่องว่างไว้ก่อนที่จะทำการดัดผมมันจะทำให้รู้สึกว่าฉันใช้นิ้วกดคีย์ Shift เร็วเกินไป!
Sarumanatee

2
@Sarumanatee: บน linux คุณสามารถปิดการใช้งานอักขระได้ทั้งหมด บางทีผู้จัดการแป้นพิมพ์ของ Ubuntu ยังมีตัวเลือกให้ หากไม่มีคุณสามารถปรับแต่งการแมปแป้นพิมพ์ด้วยตัวเอง (มันเป็นเรื่องของการลบหนึ่งบรรทัดในระบบของฉันที่จะมี/usr/share/X11/xkb/symbols/usคีย์แมป) หลังจากการโทรหา finetuning setxkbmap usหรือภาษาที่คุณต้องการ
unperson325680

@progo ใช่ ตอนนี้ฉันอยู่บน macos และใช้ Karabiner เพื่อปรับแต่งเลย์เอาต์ของแป้นพิมพ์เนื่องจากด้านล่างซ้ายของแป้นพิมพ์ของฉันคือ "fn" ซึ่งฉันเชื่อว่ามันโง่ คุณเป็นแรงบันดาลใจฉันไปตรวจสอบในที่นั่นและมีตัวเลือกที่จะเปลี่ยนทุกพื้นที่ที่ไม่ทำลายพื้นที่ปกติ
Sarumanatee

และตัวเลือกนั้นเป็นการยืนยันคำแนะนำของ @Ilmari Karonen เนื่องจากตัวเลือก karabiner จะแสดงคำสั่งเพื่อสร้าง: ตัวเลือก + ช่องว่างและตัวเลือก + กะ + ช่องว่าง แม้ว่ามันจะเปิดออก แต่จริงๆแล้วมันไม่ได้เกี่ยวข้องกับเสียงเรียกเข้าเลยในตอนท้าย!
Sarumanatee

Ilmari Karonen ถูกต้องดังนั้นนี่ไม่เกี่ยวกับคำอธิบาย แต่เพื่ออธิบายวิธีแก้ปัญหาของฉัน ฉันได้เพิ่มการจับคู่ทางไวยากรณ์ที่เชื่อมโยงพื้นที่ที่ไม่ทำลายไปยังกลุ่มการเน้นข้อผิดพลาดเพื่อให้เห็นได้ชัดว่าแตกต่างจากพื้นที่ปกติ เช่นเดียวกันกับเครื่องหมายยัติภังค์แบบนุ่มและไม่แบ่งย่อย (ซึ่งเชื่อมโยงกับกลุ่มไฮไลต์สองกลุ่มที่แตกต่างกันเนื่องจากบางครั้งฉันใช้สิ่งเหล่านี้โดยเจตนาในข้อความแทนที่จะเป็นรหัส)
bpj

19

คุณสามารถเพิ่มคำสั่งอัตโนมัติและแทนที่ช่องว่างแบบไม่ทำลายด้วยช่องว่างปกติเมื่อทำการบันทึกประเภทไฟล์เฉพาะเช่น โดยการใส่อะไรแบบนี้ลงใน vimrc ของคุณ:

augroup RemoveSpaces
  autocmd!
  autocmd BufWritePre *.css silent! :%s/\%u00A0/ /g
augroup end

คุณสามารถปรับแต่งได้โดยการเพิ่มประเภทไฟล์เพิ่มเติมหรือการตั้งค่าเครื่องหมายและกลับไปที่มันหลังจากการดำเนินการแทนที่มิฉะนั้นคุณจะถูกขับเคลื่อนไปที่จุดเริ่มต้นของบรรทัดสุดท้ายที่มีการแทนที่


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

13

'listchars'ตัวเลือกให้หมายถึงการทำให้'list'พื้นที่การแสดงผลที่ไม่ทำลาย ไม่ได้ตั้งค่าเริ่มต้นดังนั้นคุณอาจต้องการเพิ่ม

set listchars+=nbsp:‗

นั่นช่วยได้แน่นอน ฉันคิดว่าฉันจะพยายามหาวิธีเน้นถ่านตลอดเวลาเพื่อพยายามจับมันขณะที่ฉันพิมพ์: o
Sarumanatee

2
@Sarumanatee หากคุณเพิ่มบรรทัดลงvimrcในความจริงแล้วให้ไฮไลต์พวกเขาขณะที่คุณพิมพ์
Tumbler41

1

ใช่นั่นอาจเป็น alt + space เกิดขึ้นกับฉันมากมายเมื่อฉันใช้ผู้ควบคุมท่อ:

cat xyz.txt | grep abc

ถ้าคุณกดปุ่ม alt ค้างไว้นานเกินไปมันจะสร้างช่องว่างไม่แตกหลังจากไพพ์และ bash จะพยายามค้นหาคำสั่ง "grep" จากนั้นบอกคุณว่าไม่พบ grep ..

ใน macos มีเคล็ดลับในการเปลี่ยน keymap ดังนั้นทุกครั้งที่คุณแทรกช่องว่างที่ไม่ทำลายมันจะได้รับการแปลง / แทนที่โดยปกติ เท่าที่ฉันจำได้คีย์แมปจะถูกเปลี่ยนสำหรับคีย์บอร์ดทั้งหมดดังนั้นจึงสามารถแก้ไขปัญหาของคุณได้ในแอปพลิเคชันทั้งหมด


alt + space ไม่มีส่วนเกี่ยวข้องกับ Vim ตามค่าเริ่มต้น (ใน: ไม่มีการแมปผู้ใช้) บนระบบ alt + space ส่วนใหญ่จะสร้างการหลบหลีกบางอย่างซึ่งจะมี Esc ซึ่งจะออกจากโหมดแทรกใน Vim และนั่นคือการแข่งขัน พื้นที่ที่ไม่สามารถแตกหักได้เป็นผลมาจากอินพุตบัสหรือตัวจัดการอินพุตบางตัวในระบบของคุณ Vim / Gvim ไม่เคยเห็นเลย
grochmal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.