“ (arg: 1)” นี่คืออะไรปรากฏขึ้นใน terminal / tty หลังจากที่ฉันกดปุ่มรวมกัน?


21

ในเทอร์มินัลเสมือน I (ตั้งใจ) กดWin+ 1และรับบรรทัดใหม่ประกอบด้วย

(arg: 1)

ตราบใดที่ฉันให้Winกดตัวเลขทั้งหมดผมกดได้รับการผนวกเข้ากับตัวเลขในวงเล็บเช่นWinและ1+ อัตราผลตอบแทน4(arg:14)

เมื่อฉัน (หลังจากปล่อยWin) กดปุ่มใด ๆ ตัวละครนั้นจะถูกพิมพ์หลายครั้งตามจำนวนที่อ่านและการ(arg: ...)แสดงออกจะถูกแทนที่ด้วยพรอมต์มาตรฐาน

ไม่มีใครรู้ว่าเกิดอะไรขึ้นที่นี่

คำตอบ:


24

นั่นคืออาร์กิวเมนต์หลักซึ่งเป็นคุณสมบัติของไลบรารี readline ที่มีอยู่ภายในbash:

digit-argument (M-0, M-1, ..., M--)
    Add  this digit to the argument already accumulating, or start a
    new argument. M-- starts a negative argument.

คุณลักษณะนี้ทำให้การเพิ่มหรือลบข้อความในบรรทัดคำสั่งที่แก้ไขในปัจจุบันง่ายขึ้น สมมติว่าคุณต้องการเขียนecho gggg:

  1. ใส่echoตามด้วยช่องว่าง
  2. กดปุ่ม Meta (ซึ่งอาจจะWin, Altและ / หรือEscสำหรับคุณ) และประเภท4g

แต่บ่อยครั้งที่คุณต้องพิมพ์ตัวอักษรหลาย ๆ ครั้งซึ่งจะช่วยคุณได้อย่างไร คุณลักษณะนี้ได้รับการออกแบบมาเป็นหลักสำหรับคำสั่ง readline ดูบทที่ 8.2.1–8.2.3 ของคู่มืออ้างอิง (“ C” ความหมายCtrl“ M” หมายถึง Meta)

คุณสามารถย้ายกลับคำเดียวด้วย Meta และBแต่ถ้าคุณต้องการย้ายกลับหลายคำพร้อมกัน? คุณสามารถAltกดค้างไว้Bหลายครั้งหรือใช้อาร์กิวเมนต์หลัก:

  1. มีการพิมพ์ผิดในบรรทัดคำสั่งของคุณห้าคำกลับมา:

    $ echo one two tree four five six seven
  2. กด Meta สำคัญประเภท5และกด Meta Bและ และviolà:

    $ echo one two ree four five six seven
  3. แก้ไขการพิมพ์ผิดและกดEnterเพื่อยิงหรือEndหรือCtrl+ Eเพื่อเลื่อนไปยังจุดสิ้นสุดของบรรทัดอีกครั้ง

คุณสามารถลบคำเดียวโดยการกด Meta และBackspaceแต่ถ้าคุณต้องการลบหลายคำพร้อมกัน?

  1. คุณลืมคำในบรรทัดคำสั่งของคุณ:

    $ echo one two four five six seven
  2. กด Meta สำคัญประเภท4และกด Meta Backspaceและ

    $ echo one two 
  3. พิมพ์คำที่หายไปตามด้วยเว้นวรรคแล้วกดCtrl+ Yเพื่อวางสิ่งที่เพิ่งลบไป และviolà:

    $ echo one two three four five six seven

คุณพูดถูกคุณสามารถย้ายไปที่นั่นได้ตามที่อธิบายไว้โดยไม่ลบอะไรเลย เราอยู่บน Linux มีหลายวิธีในการทำสิ่งเดียวกัน

และ "ข้อโต้แย้งเชิงลบ" คืออะไร? มันทำเช่นเดียวกัน แต่ในทิศทางตรงกันข้ามดังนั้น Meta -2Meta Backspaceจะลบคำสองคำถัดไปของบรรทัดคำสั่ง “ แต่ใคร ๆ ก็สามารถใช้ Meta 1Meta Dทำสิ่งเดียวกัน!” ดีใจที่คุณได้รับยินดีต้อนรับสู่บรรทัดคำสั่งของคุณ

อ่านเพิ่มเติม:


สิ่งนี้รุ่นทุบตีอะไรออกมา? ดูเหมือนว่ามีประโยชน์จริงๆ +1
Sergiy Kolodyazhnyy

ใน WSL มันEsc
αғsнιη

1
ว้าว! ฉันดีใจที่ได้ให้คำตอบที่ดีแก่คุณ !!
guntbert

ไม่มีอะไรที่จะ "ยอมรับ" บ่อยครั้งเมื่อเรากำลังพูดถึงสิ่งที่เรารู้อยู่แล้วว่าเรา ('ฉัน') มักจะไม่ทำการวิจัยอีกครั้ง งานวิจัยของคุณทำให้คำตอบนี้ครอบคลุมมาก - รวมถึงแหล่งข้อมูลด้วย
guntbert

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