ฉันใช้ปุ่มลัด vi ในเปลือก tcsh ของฉัน
ตอนนี้ฉันไม่ทราบว่าโหมด vi ใดที่ฉันอยู่ ( insert
โหมดหรือcommand
โหมด) ซึ่งนำไปสู่ความยุ่งยากมากมาย
ไม่มีใครรู้วิธีแสดงโหมด vi ปัจจุบันในเปลือกหรือไม่ (โดยรวมไว้ในข้อความแจ้งหรือบางสิ่ง)
ฉันใช้ปุ่มลัด vi ในเปลือก tcsh ของฉัน
ตอนนี้ฉันไม่ทราบว่าโหมด vi ใดที่ฉันอยู่ ( insert
โหมดหรือcommand
โหมด) ซึ่งนำไปสู่ความยุ่งยากมากมาย
ไม่มีใครรู้วิธีแสดงโหมด vi ปัจจุบันในเปลือกหรือไม่ (โดยรวมไว้ในข้อความแจ้งหรือบางสิ่ง)
คำตอบ:
ฉันไม่เชื่อว่าจะมีวิธีใดในการกำหนดรูปแบบของคุณในสายตา แต่ถ้าคุณปรับเปลี่ยนพฤติกรรมของคุณเล็กน้อยมันจะไม่สำคัญ
หากคุณต้องการอยู่ในโหมดคำสั่งให้กด ESC ก่อนพิมพ์คำสั่ง
หากคุณต้องการอยู่ในโหมดแทรกให้กด ESC และ i ก่อนพิมพ์เนื้อหา
คุณจะจบลงด้วยการกดปุ่ม ESC มาก แต่ผู้ใช้ vi ทุกคนที่ฉันเคยพบเจอก็ทำเช่นนั้นอยู่ดี
ฉันได้ดูเอกสารประกอบแล้วและฉันต้องบอกว่าฉันไม่สามารถหาวิธีตรวจจับและแสดงโหมด vi ปัจจุบันได้ ฉันหวังว่าคุณจะมีความประหลาดใจที่น่าพอใจและมีคนมาแก้ปัญหา แต่แน่นอนฉันไม่สามารถเห็นวิธีการทำสิ่งที่คุณถาม
ฉันคิดว่ามีวิธีที่จะทำเช่นนี้ แต่มันเกินความเป็นจริงอย่างมากสำหรับความรำคาญเล็กน้อยและฉันไม่คิดว่านั่นคือสิ่งที่คุณมีอยู่ในใจเมื่อคุณโพสต์คำถามนี้ หากเป็นจริงหยุดอ่านตอนนี้และสนุกกับชีวิตของคุณ
OTOH ถ้านี่เป็นสัตว์เลี้ยงที่ฉุนเฉียวของคุณและมันทำให้คุณคลั่งและคุณอยากจะตบปัญหานี้อย่างยิ่งนี่เป็นความคิดของฉันเกี่ยวกับเรื่องนี้:
โดยสังเขป Unix ใช้เทอร์มินัล I / O เป็นสตรีม I / O ฟูลดูเพล็กซ์ระหว่างไดรเวอร์อุปกรณ์และกระบวนการผู้ใช้ซึ่งสามารถแทรกโมดูลได้ มันถูกจัดระเบียบเป็นสแต็กดังนั้นคุณสามารถเลเยอร์สตรีมได้มากเท่าที่คุณต้องการ ผลรวมของสตรีมที่ฉีดจะสร้างพฤติกรรมของ I / O เทอร์มินัลของคุณ
เมื่อป้อนตัวละครโมดูลแรกจะตรวจสอบและส่งต่อ (ถ้าต้องการ) เมื่อคำตอบมาถึงในทิศทางตรงกันข้ามมันจะมีโอกาสอีกครั้งในการตรวจสอบและส่งต่อ นี่คือวิธีที่ Ctrl-C ได้รับการจัดการในระดับที่สูงขึ้นไปยังคีย์อักขระปกติ
คุณสามารถสร้างไบนารีที่ใช้งานโมดูลการสตรีมได้เมื่อมีการเรียกใช้การทำงานแบบเงียบ ๆ ในเบื้องหน้าตรวจสอบและส่งผ่านการกดแป้นพิมพ์ทั้งหมดดำเนินการตามที่คุณต้องการในการกดแป้นที่คุณสนใจ สำหรับเจตนาและวัตถุประสงค์ทั้งหมดมันจะปรากฏราวกับว่าคุณกำลังทำงานกับเชลล์ โอ้ คุณสามารถเรียกใช้ไบนารี่นี้ในบรรทัดสุดท้าย (หรือแรกหรือใดก็ได้) ของ. tcshrc ของคุณและคุณจะไม่รู้ด้วยซ้ำว่ามันอยู่ที่นั่น
มีไพรเมอร์ที่ดีที่นี่แต่ฉันไม่สามารถหาได้มากในหัวข้อนี้อาจเป็นเพราะมันผ่านนายก
หน้านี้มีสคริปต์รายละเอียดอย่างเป็นธรรมซึ่งกำหนดขึ้นสิ่งที่คุณต้องการ (และอื่น ๆ ) ในzsh บางทีมันอาจถูกดัดแปลงให้ทำงานกับ tcsh (ฉันไม่คุ้นเคยกับเปลือกหอยมากนัก)
ให้ทุกคนมีปัญหานี้แน่นอน (อย่างผม) ผมพบว่าวิธีการแก้ปัญหาที่StackOverflow เห็นได้ชัดว่ามีการสนับสนุนดั้งเดิมสำหรับเรื่องนี้ใน readline ดังนั้นคุณสามารถเพิ่มสิ่งต่อไปนี้ใน~/.inputrc
:
set show-mode-in-prompt on
และเพื่อปรับแต่งการใช้อักขระจริง:
set vi-ins-mode-string "custom-ins"
set vi-cmd-mode-string "custom-cmd"
การแก้ไข Command-Line ด้วย tcsh
มีโหมดหลักสองโหมดสำหรับการแก้ไขบรรทัดคำสั่ง
ตามตัวแก้ไขข้อความที่ใช้บ่อยที่สุดสองตัวคือ Emacs และ viด้วยการเชื่อมviคุณต้องสลับระหว่างโหมดแทรกและโหมดคำสั่ง
คำสั่งต่าง ๆ มีประโยชน์ในแต่ละโหมดโหมด viมีโหมดย่อยสองโหมดคือโหมดแทรกและโหมด คำสั่ง
- โหมดเริ่มต้นคือการแทรก
Esc
คุณสามารถสลับระหว่างโหมดโดยการกด- อีกทางเลือกหนึ่งในคำสั่งโหมด
การพิมพ์ 'a' (ผนวก) หรือ 'ฉัน' (แทรก) จะกลับมาให้คุณใส่โหมด
หมายเหตุเพิ่มเติมเกี่ยวกับหน้าการtcsh
ปรับแต่งที่เชื่อมโยงไว้ข้างต้นแล้ว
ฉันมีปัญหาที่แน่นอนเหมือนกันและโดยบังเอิญได้พบวิธีแก้ปัญหา แม้ว่าเธรดนี้จะเก่า แต่ฉันไม่สามารถหาเว็บไซต์อื่นที่เสนอวิธีแก้ไขปัญหาได้ดังนั้นฉันจึงถือว่าการโพสต์ข้อความในกระทู้นี้ไม่เป็นไร
เพียงรีเซ็ตการตั้งค่าของโปรแกรมเทอร์มินัลหรือเชลล์ ขณะนี้ฉันกำลังใช้ PuTTY และฉันเพิ่งลบการตั้งค่าที่บันทึกไว้สำหรับการเชื่อมต่อที่บันทึกไว้และสร้างเซสชันที่บันทึกไว้ใหม่ ทำงานเหมือนจับใจ
หวังว่านี่จะช่วยได้!
โปรดดูคำตอบของฉันในSO Bash 4.4 / Readline 7.0 จะเพิ่มการสนับสนุนสำหรับฟังก์ชันการทำงานนี้และในระหว่างนี้ฉันได้เผยแพร่ Bash 4.3 / Readline 6.3 ไปยังGithubรุ่นที่ได้รับการปรับปรุงแล้ว