คำถามติดแท็ก ex-mode

8
โหมด Ex มีการใช้งานจริงหรือไม่?
Vim มีโหมด Ex ที่สามารถป้อนได้โดยการป้อนQและโหมดบรรทัดคำสั่งที่สามารถป้อนq:ได้ ร้องเรียนทั่วไปในหมู่ผู้ใช้กลุ่มใหม่คือพวกเขาเข้าสู่โหมดเหล่านี้โดยไม่ได้ตั้งใจเมื่อพยายามที่จะออกเป็นกลุ่ม ดังนั้นฉันจึงปิดใช้งานคีย์เหล่านี้~/.vimrcเพื่อหยุดตัวเองโดยไม่ได้ตั้งใจ (โดยเฉพาะq:): map q: <Nop> nnoremap Q <nop> แม้ว่าฉันจะอ่านเอกสาร vim บน Exเป็นผู้ใช้ Vim ที่มีประสบการณ์ปานกลางและเข้าใจแนวคิดพื้นฐานที่อยู่เบื้องหลัง แต่ฉันก็ยังต้องดิ้นรนเพื่อหาประโยชน์ในการใช้ vim ทุกวัน โดยทั่วไปดูเหมือนว่ามีประโยชน์น้อยกว่าเพียงแค่ป้อนคำสั่งบรรทัดคำสั่ง vim มาตรฐานที่นำหน้าด้วย:เนื่องจากการเปลี่ยนแปลงไม่ได้สะท้อนในทันที Ex มีการใช้งานจริงทุกวันใน Vim สมัยใหม่หรือไม่? มีอะไรที่ทำได้ง่ายกว่าในโหมด Ex กว่าคำสั่งมาตรฐานหรือไม่ ความแตกต่างระหว่างโหมดบรรทัดคำสั่งและโหมด ex คืออะไร?
115 ex-mode 

1
วิธีแก้ไขไฟล์แบบไม่โต้ตอบ (เช่นในไพพ์ไลน์)?
ฉันต้องการแก้ไขไฟล์ที่ส่งผ่านไปป์ไลน์โดยใช้ vim แบบไม่โต้ตอบหรือแก้ไขไฟล์ในตำแหน่ง (คล้ายกับsed) ตัวอย่างการใช้sed: $ sed -i'.bak' s/foo/test/g file # Edit file in-place. $ cat file | sed s/foo/test/g # Parse file in pipeline. อย่างไรก็ตามฉันสามารถอ่านที่นี่ว่า: sedเป็นS tream ED itor ไม่ใช่ตัวแก้ไขไฟล์ อย่างไรก็ตามผู้คนทุกที่มีแนวโน้มที่จะละเมิดมันสำหรับพยายามแก้ไขไฟล์ มันไม่ได้แก้ไขไฟล์ ประการที่สองตัวเลือกบางอย่างเช่นการแก้ไขในสถานที่ ( -i) เป็นแบบพกพา วิธีการทำงานเหมือนกันสามารถทำได้ในกลุ่ม?

2
อะไร: เปิดทำเป็นกลุ่ม?
เอกสารของ Vim มีไว้เพื่อกล่าวเกี่ยวกับ:openคำสั่ง: This command is in Vi, but Vim only simulates it: *:o* *:op* *:open* :[range]o[pen] Works like |:visual|: end Ex mode. {Vi: start editing in open mode} :[range]o[pen] /pattern/ As above, additionally move the cursor to the column where "pattern" matches in the cursor line. Vim does not …
18 ex-mode 

1
ฉันจะออกจากโหมดป้อนข้อมูล ex ได้อย่างไร
:iผมติดอยู่ในโหมดการป้อนข้อมูลอดีตโดยการพิมพ์ ตอนนี้ฉันไม่สามารถใช้คำสั่งใด ๆ ทั้งหมดมีเพียงข้อความ การกดหลบหนีไม่ทำให้ฉันหลุดออกจากการพิมพ์:visualไม่ได้ทำให้ฉันหลุดพ้นจากการพิมพ์และvisualจะไม่ทำให้ฉันหลุดพ้น ฉันจะออกจากมันได้อย่างไร
16 ex-mode 

1
ลบบรรทัดที่ตรงกับรูปแบบจากบรรทัดที่กำหนดไปยังจุดสิ้นสุดของไฟล์
หากฉันมีไฟล์ที่มีความคิดเห็นจำนวนมากอยู่ในนั้นและฉันต้องการลบความคิดเห็นทั้งหมดจากคำพูดบรรทัดที่ 3 ถึงท้ายไฟล์วิธีที่ดีที่สุดในการทำคืออะไร ฉันติดอยู่เนื่องจากสิ่งที่ฉันพยายามครั้งแรกดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการ: :3,$/^#/d แทนที่จะมองหารูปแบบและการลบบรรทัดด้วยในช่วงจาก 3 ถึงจุดสิ้นสุดของไฟล์มันจะลบบรรทัดทั้งหมดจาก 3 ไปจนถึงบรรทัดที่ตรงกับรูปแบบแล้วหยุด ดังนั้นฉันจะใช้คำสั่ง ex กับช่วงของเส้นได้อย่างไร ในกรณีนี้มันจะไปที่จุดสิ้นสุดของไฟล์ แต่มันจะแตกต่างกันหรือไม่ถ้าฉันจะทำเครื่องหมายหรือระหว่างบรรทัดที่ 10 และ 20 หรือช่วงอื่น ๆ
10 ex-mode 

2
วิธีเขียนบัฟเฟอร์ทั้งหมดไปยังเอาต์พุตมาตรฐานจากบรรทัดคำสั่ง?
ฉันต้องการเขียนบัฟเฟอร์ทั้งหมดลงในเอาต์พุตมาตรฐาน ( /dev/stdout) แทนไฟล์และคำสั่งต่อไปนี้ทำงานตามที่คาดไว้ในขณะที่แก้ไขไฟล์: :w >> /dev/stdout คำแนะนำ: กดControl+ Lเพื่อรีเฟรชหน้าจอ แต่มันไม่ทำงานอย่างที่คาดไว้เมื่อฉันพยายามทำสิ่งเดียวกันจากบรรทัดคำสั่ง (แบบไม่โต้ตอบ ): $ echo This is example. | vim - '+:w >> /dev/stdout' '+:q!' Vim: Reading from stdin... เช่นเดียวกันกับ:w !tee, :x! /dev/stdout, :%printและที่คล้ายกัน ก่อนที่จะเลิกพูดว่า: [Device] 1L, 17C appended. มีวิธีการบังคับให้ vim เขียนอินพุตมาตรฐานลงในเอาต์พุตมาตรฐานตรงกลางของไพพ์หรือไม่? อาจจะถูกบัฟเฟอร์อย่างใด?

2
ใช้คำสั่ง ex เพื่อตรวจสอบว่าสองบรรทัดเหมือนกันหรือไม่
ผมกำลังมองไปที่คำถามนี้แล้วสงสัยว่าผมอาจจะใช้คำตอบของฉันซึ่งใช้ sedใช้อย่างหมดจด POSIX ex เคล็ดลับคือในขณะที่sedฉันสามารถเปรียบเทียบพื้นที่พักกับพื้นที่รูปแบบเพื่อดูว่าพวกเขาจะเทียบเท่า (กับ G;/^\(.*\)\n\1$/{do something}) ฉันรู้วิธีที่จะทำแบบทดสอบexไม่ ฉันรู้ว่าในกลุ่มที่ฉันสามารถYank บรรทัดแรกแล้วพิมพ์ :2,$g/<C-r>0/dไปเกือบจะทำในสิ่งที่ผมระบุ แต่ถ้าบรรทัดแรกมีอะไร แต่ข้อความตัวเลขและตรงไปตรงมามากนี้จะกลายเป็นไม่แน่นอนแน่นอนเนื่องจากสายจะถูกทิ้งในเป็น regexไม่ใช่แค่สตริงสำหรับการเปรียบเทียบ (และหากบรรทัดแรกมีเครื่องหมายทับหน้าส่วนที่เหลือของบรรทัดจะถูกตีความเป็นคำสั่ง!) ดังนั้นหากฉันต้องการลบทุกบรรทัดในmyfileที่เหมือนกันกับบรรทัดแรก - แต่ไม่ลบบรรทัดแรก - ฉันจะทำเช่นนั้นได้exอย่างไรโดยใช้? สำหรับเรื่องนั้นฉันจะใช้มันได้viอย่างไร มีวิธี POSIX ในการลบบรรทัดหรือไม่หากตรงกับอีกบรรทัดหนึ่ง? บางทีบางอย่างเช่นไวยากรณ์ในจินตนาการ: :2,$g/**lines equal to "0**/d
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.