: wq ใน Vim ไม่ได้บันทึก


8

ฉันกำลังพยายามใช้:wqเพื่อบันทึกไฟล์ข้อความที่ฉันได้แก้ไขเป็นกลุ่ม แต่เมื่อฉันป้อน:wqฉันจะได้รับข้อผิดพลาด

E45: 'readonly' option is set (add ! to override)`  

เมื่อฉันเพิ่ม!จะ:wqชอบ:wq!ผมได้รับนี้

"/etc/dhcp/dhcpd.conf"

"/etc/dhcp/dhcpd.conf" E212: Can't open file for writing

ไฟล์ที่ฉันต้องการแก้ไขอยู่dhcpdใน/etc/dhcpdเส้นทาง

ฉันจะทำสิ่งนี้ได้อย่างไร


ชอบ:xหรือZZเพื่อออกและบันทึก มันจะเขียนเมื่อมีการเปลี่ยนแปลงเท่านั้น
Hauleth

คำตอบ:


14

คุณต้องเปิดไฟล์โดยใช้สิทธิ์ superuser ดังนี้:

sudo vi /etc/dhcp/dhcpd.conf

แก้ไขไฟล์โดยการกดiแล้วบันทึกและออกจากการกดEscแล้วจากนั้น:wqหรือ:xหรือเพียงแค่:wบันทึก


ขอขอบคุณที่Rikingสำหรับการแนะนำsudoedit: คุณสามารถใช้สำหรับการแก้ไขไฟล์ที่เป็นรากมากกว่าการใช้sudoedit /path/to/file/filename sudo <editor> /pat/to/file/filenameนี้จะเป็นประโยชน์สำหรับเครื่องระดับองค์กรหรือเครื่องผลิตตั้งแต่บันทึก sudoedit /var/log/auth.logไป

หากคุณต้องการเปลี่ยนโปรแกรมแก้ไขเริ่มต้นสำหรับ sudoedit ให้ทำดังต่อไปนี้:

sudo update-alternatives --config editor

แล้วกดและเลือกแก้ไขของทางเลือกของคุณและกดอีกครั้งReturnReturn


ดูเพิ่มเติมที่: การสนทนาเกี่ยวกับการ redit บนทำไม sudoedit อาจพิจารณาเป็นพิเศษ


3
ฉันชอบsudoeditสถานการณ์เหล่านี้ - มันสร้างสำเนาชั่วคราวเรียกใช้ตัวแก้ไขและคัดลอกผลลัพธ์ หากคุณเคยเลือกที่คำสั่งการทำงานnano EDITOR=vi sudoedit /etc/file
Riking

1
@Riking: ขอบคุณสำหรับsudoeditไม่รู้ด้วยซ้ำว่ามันมีอยู่จริง แต่มาในนี้ขณะ sudoeditgoogling ฉันจะแนะนำ แต่ให้ผู้ใช้ทราบหากจำเป็นต้องใช้
jobin

sudoeditนอกจากนี้ยังสามารถเลือกEDITORตัวแปรได้ง่ายกว่าการตั้งค่าอื่น ๆ
muru

9

/etcประกอบด้วยการกำหนดค่าไฟล์ทั้งหมดเพื่อที่จะแก้ไขไฟล์ที่อยู่ภายใต้/etcคุณต้องมีสิทธิ์ superuser sudoแต่บางครั้งเราลืมที่จะใช้ แต่ในเวลานั้นเรายังสามารถใช้

:w !sudo tee %

จากนั้นป้อนรหัสผ่านผู้ดูแลระบบของคุณ

:q!

เพื่อออกสำเร็จ


1
คุณสามารถเพิ่มcmap w!! w !sudo tee > /dev/null %ที่คุณจะอนุญาตให้มีการบันทึกผ่านทางวิธีนี้กับ.vimrc :w!!หากคุณสนใจว่าเพราะเหตุใดวิธีการนี้จึงดูstackoverflow.com/questions/2600783/…
Gerhard Burger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.