มีวิธีที่จะทำให้ sed ขอให้ฉันยืนยันก่อนที่จะเปลี่ยนแต่ละครั้งหรือไม่ บางสิ่งที่คล้ายกับ 'c' เมื่อใช้แทนที่ส่วนภายในเป็นกลุ่ม sed ทำเช่นนี้ได้ทั้งหมดหรือไม่?
ฉันต้องการทราบว่ามีวิธีที่จะทำให้ Vim ทำตัวเป็นแบบtail -fนี้หรือไม่ แม้แต่ปลั๊กอิน Vim ที่ดีที่สุดที่ฉันเคยพบมาก็ไม่ได้ทำตามที่ฉันคาดไว้ ผมต้องการที่จะเห็นการปรับปรุงแฟ้มในเวลาจริง แม้ว่าฉันจะอยู่ห่างจากแป้นพิมพ์ฉันต้องการให้ Vim โหลดบัฟเฟอร์อย่างต่อเนื่องและข้ามไปยังบรรทัดสุดท้าย ทำอย่างไร (ฉันไม่ต้องการโหลดไฟล์ทั้งหมดเนื่องจากไฟล์บันทึกบางไฟล์มีขนาดใหญ่มากวิธีที่ดีที่สุดคือการโหลดบรรทัดสุดท้ายเท่านั้นเช่นtail -fทำ)
ในโปรแกรมแก้ไข vim ฉันต้องการแทนที่อักขระขึ้นบรรทัดใหม่ (\ n) ด้วยอักขระบรรทัดใหม่สองตัว (\ n \ n) โดยใช้โหมดคำสั่ง vim เนื้อหาไฟล์อินพุต: This is my first line. This is second line. คำสั่งที่ฉันพยายาม: :%s/\n/\n\n/g มันจะแทนที่สตริงด้วยอักขระที่ไม่ต้องการเช่น This is my first line.^@^@This is second line.^@^@ จากนั้นฉันลองคำสั่งต่อไปนี้ :%s/\n/\r\r/g มันทำงานอย่างถูกต้อง คุณช่วยอธิบายได้ไหมว่าทำไมมันถึงใช้ได้ดีกับคำสั่งที่สอง?
บางครั้งฉันจำเป็นต้องเขียนข้อความจากนั้นส่งข้อความไปยังคำสั่งอื่น เวิร์กโฟลว์ตามปกติของฉันมีลักษณะดังนี้: vim # I edit and save my file as file.txt cat file.txt | pandoc -o file.pdf # pandoc is an example rm file.txt ฉันพบว่ามันยุ่งยากและพยายามเรียนรู้การเขียนสคริปต์ทุบตีฉันต้องการทำให้กระบวนการง่ายขึ้นมากโดยการเขียนคำสั่งที่เปิดไฟเอดิเตอร์และเมื่อเอดิเตอร์ปิดไพพ์เอาต์พุตของเอดิเตอร์เพื่อ stdout quickedit | pandoc -o file.pdfแล้วฉันจะสามารถเรียกใช้คำสั่งเป็น ฉันไม่แน่ใจว่ามันจะทำงานอย่างไร ฉันได้เขียนฟังก์ชันเพื่อทำให้สิ่งนี้เป็นไปโดยอัตโนมัติโดยทำตามขั้นตอนการทำงานที่ถูกต้องข้างต้นรวมถึงการเพิ่มเติมบางอย่าง มันสร้างสตริงแบบสุ่มเพื่อทำหน้าที่เป็นชื่อไฟล์และส่งผ่านไปยังกลุ่มเมื่อฟังก์ชันถูกเรียกใช้ เมื่อผู้ใช้ออกเป็นกลุ่มโดยการบันทึกไฟล์ฟังก์ชั่นพิมพ์ไฟล์ไปยังคอนโซลแล้วลบไฟล์ function quickedit { filename="$(cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c …