เขียนคำสั่งที่มีโครงสร้างในหลายบรรทัดโดยเปิดใช้งานคีย์แท็บ


10

ฉันต้องการเขียนคำสั่งแบบมีโครงสร้างในหลายบรรทัดเช่น

$ for i in *;
 do
    file $i;
 done
bmdt.md: ASCII text
breakfast.md: ASCII text
brmdh.md: ASCII text
test.sh: Bourne-Again shell script text executable, ASCII text

แต่หาแท็บไม่ทำงาน

ฉันจะเปิดใช้งานคีย์แท็บในคอนโซลทุบตีได้อย่างไร


4
กดแท็บ Control-V แทน; แท็บถูกผูกไว้กับไฟล์ / คำสั่งเสร็จสมบูรณ์โดยค่าเริ่มต้น
mosvy

คำตอบ:


10

เมื่อคุณกดEnterหลังจากป้อนคำสั่งที่ไม่สมบูรณ์bashเชลล์จะแสดงพรอมต์ต่อเนื่อง (พรอมต์รอง$PS2) และอนุญาตให้คุณทำคำสั่งที่ป้อนให้สมบูรณ์ สิ่งอำนวยความสะดวกการแก้ไขบรรทัดคำสั่งของเชลล์ ณ จุดนั้นเหมือนกับที่พร้อมต์ดั้งเดิม (พร้อมต์หลัก$PS1) ซึ่งหมายความว่าTabคีย์จะทำคำสั่งและการเติมชื่อไฟล์ให้เสร็จสิ้นตามปกติ

ในการแทรกอักขระแท็บใช้Ctrl+V Tabหรือใช้ช่องว่างเพื่อเยื้อง อักขระแท็บ (หรือตัวอักษรตัวอักษรอื่น ๆ ) Ctrl+Vจะสามารถแทรกถ้านำหน้าด้วย


อีกทางเลือกหนึ่งหากในโหมดแก้ไขบรรทัดคำสั่ง Emacs (ซึ่งฉันเชื่อว่าเป็นค่าเริ่มต้นbash) ให้ใช้Ctrl+X Ctrl+Eเพื่อเปิดโปรแกรมแก้ไขเพื่อป้อนคำสั่งของคุณ ตัวแก้ไขที่ใช้จะเป็นตัวระบุที่ระบุโดยEDITORตัวแปร shell / environment หรือemacsหากตัวแปรนี้ไม่ได้ถูกตั้งค่าไว้

ในโหมดแก้ไขบรรทัดคำสั่ง Vi กดEscape vเพื่อทำสิ่งเดียวกัน

คำสั่งจะถูกดำเนินการหลังจากบันทึกและออกจากโปรแกรมแก้ไข


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

1
@avirate Vim เป็นตัวแปรของโปรแกรมแก้ไข Vi ดั้งเดิม "โหมดการแก้ไขบรรทัดคำสั่ง Vi" เป็นโหมดที่คุณเปิดใช้งานด้วยset -o viและที่ให้คุณสามารถใช้คำสั่งการแก้ไข Vi / Vim บนบรรทัดคำสั่งเช่น ( Esc) dwเพื่อลบไปยังจุดสิ้นสุดของคำปัจจุบัน ฯลฯ ใช้set -o emacsเพื่อรับกลับ เป็นโหมดการแก้ไขบรรทัดคำสั่ง Emacs
Kusalananda

น่าอัศจรรย์ฉันค้นหาและสำรวจมันทันที
แคลคูลัส

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