หากคุณเปิดไฟล์ที่คุณไม่ได้รับอนุญาตให้เขียนเป็นกลุ่มแล้วตัดสินใจว่าคุณจำเป็นต้องเปลี่ยนไฟล์คุณสามารถเขียนการเปลี่ยนแปลงของคุณได้โดยไม่ต้องออกจาก vim โดยที่:w !sudo tee %
ฉันไม่เข้าใจวิธีการทำงานนี้ คุณช่วยกรุณาตัดออกได้ไหม
ฉันเข้าใจ:wส่วนมันเขียนบัฟเฟอร์ปัจจุบันไปยังดิสก์โดยสมมติว่ามีชื่อไฟล์ที่เชื่อมโยงอยู่ใช่ไหม
ฉันยังเข้าใจ!ว่าsudo teeคำสั่งใดที่เรียกใช้งานและ%แสดงถึงเนื้อหาบัฟเฟอร์ปัจจุบันใช่ไหม
แต่ก็ยังไม่เข้าใจว่ามันใช้งานได้อย่างไร
:!commandเป็นตัวกรอง (cf.:h !) ในขณะที่:w !commandไม่ได้เป็นเพียงแค่ดำเนินการcommandกับไฟล์ปัจจุบันเป็นstdin(cf.:h :w_c) หากต้องการปัญญา::w !sed /./dไม่เปลี่ยนเนื้อหาของบัฟเฟอร์ปัจจุบัน แต่สูตรย่อมไม่ถูกต้องด้วยเหตุผลอื่นจะต้องมีการหลบหนีออก:%:exec 'w !sudo tee ' . shellescape(expand('%', 1))คำสั่งเดิมไม่สามารถใช้งานได้พูดชื่อไฟล์ด้วยช่องว่าง