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

6
วิธีต่อท้ายบรรทัดท้ายไฟล์ถ้ายังไม่มีเท่านั้น?
ฉันต้องการแก้ไขไฟล์ในสถานที่โดยต่อท้ายบรรทัดเฉพาะในกรณีที่ยังไม่มีหลักฐานของสคริปต์ของฉัน ปกติฉันจะทำสิ่งที่ชอบ: cat >> ~/.bashrc <<EOF export PATH=~/.composer/vendor/bin:\$PATH EOF นอกจากนี้ยังเป็นไปได้ที่จะทำผ่าน ansible ( line+ insertafter=EOF+ regexp) แต่เป็นอีกเรื่องหนึ่ง ใน vi / ex ฉันสามารถทำสิ่งที่ชอบ: ex +'$s@$@\rexport PATH=\~/.composer/vendor/bin:$PATH@' -cwq ~/.bashrc แต่แล้วฉันจะตรวจสอบได้อย่างไรว่ามีบรรทัดนั้นอยู่แล้ว (และไม่ทำอะไรเลย) โดยสมบูรณ์โดยไม่ต้องทำซ้ำบรรทัดเดิม? หรืออาจจะมีวิธีที่ง่ายกว่าในการแก้ไขใน Ex?

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.