ทำไม CTRL-r ทำหน้าที่อย่างประหลาด (แสดงเพียงส่วนหนึ่งของคำสั่ง) บน OS X


10

Ctrl+ rเป็นเครื่องมือเล็ก ๆ ที่ยอดเยี่ยมสำหรับการค้นหา.bash_historyคำสั่งที่รันก่อนหน้านี้

อย่างไรก็ตามเมื่อฉันใช้มันใน OS X Terminal.app ฉันเห็นพฤติกรรมแปลก ๆ และฉันก็สงสัยว่าถ้ามีคนอื่นเห็นสิ่งเดียวกันหรือรู้วิธีการแก้ไข

  1. Ctrl+r
  2. พิมพ์สิ่งที่ชอบ find
  3. โอ้เยี่ยมมากดูสิ ... มันเป็นคำสั่งที่ฉันต้องการ find . -exec grep -q "hello world" '{}' \; -print
  4. ฉันต้องการเรียกใช้คำสั่งนั้น แต่เปลี่ยน Hello world เป็นอย่างอื่น
  5. ดังนั้นฉันจึงตีหรือ
  6. ตอนนี้คำสั่งคือ SORTA บนบรรทัดคำสั่ง แต่ดูเหมือนว่าจะมีคำสั่งเวอร์ชัน trunctated เสมอเช่นนี้: -q "blog_posts_by" '{}' \; -printที่ซึ่งคำสั่งทั้งหมดอยู่ที่นั่นและฉันสามารถใช้เคอร์เซอร์เพื่อเลื่อนไปรอบ ๆ บรรทัด แต่ไม่ใช่ทั้งหมด มันถูกพิมพ์ มีการตัดการเชื่อมต่อระหว่างสิ่งที่แสดงบนบรรทัดและสิ่งที่เครื่องคิดว่าฉันกำลังแก้ไขอยู่

ไม่มีใครมีเบาะแสว่าทำไมสิ่งนี้อาจเกิดขึ้น? ไม่ใช่เรื่องง่ายที่จะค้นหาเว็บ


สิ่งนี้เกิดขึ้นกับบรรทัดที่ยาวกว่าความกว้างหน้าต่างคำของคุณหรือไม่
Essobi

Terminal.App/OSX เวอร์ชันใดที่คุณใช้งาน BTW รุ่นทุบตี? คุณสามารถแสดง. bashrc ของคุณให้เราทราบได้หรือไม่?
Essobi

คำตอบ:


14

คุณอาจมีลำดับเอสเคปสำหรับสีในพรอมต์ที่ไม่ถูกต้อง พวกเขาจะต้องอยู่ในและ\[\]

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

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


ตกลงฉันมีปัญหาอีกสองสามข้อที่ผู้ตอบคำถามได้แก้ไขไว้ในเธรด StackOverflow นี้ - stackoverflow.com/questions/35563/…
bryan kennedy

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

0

อาจเป็นเพราะวิธีการตั้งค่ากุญแจหนีภัยในเทอร์มินัลของคุณสิ่งที่ฉันทำตามปกติคือใช้ลูกศรซ้ายหรือขวาบน iTerm หรือ Terminal.app เนื่องจากฉันไม่ได้เป็นแฟนของการกดปุ่มคืนทันทีที่ทำงานให้คุณ ?


0

อีกสาเหตุที่เป็นไปได้สำหรับปัญหานี้คือการมีTERMค่าที่ไม่ถูกต้อง ตัวอย่างเช่นนี้เกิดขึ้นกับผมเมื่อผมใช้สีใน PS1 ของฉัน แต่ฉันถูกกำหนดให้TERM xtermฉันเปลี่ยนเป็นxterm-256colorแล้ว CTRL-r เริ่มทำงานอย่างถูกต้องอีกครั้ง

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