ฉันจะบันทึกไฟล์ที่แก้ไขด้วย vim ได้อย่างไร?


66

ฉันไม่สามารถบันทึกการเปลี่ยนแปลงหลังจากแก้ไข

sudo vi /etc/network/interfaces

ข้อความก่อนการแก้ไข:

auto lo
iface lo inet ...

แก้ไขไปที่:

auto eth0
iface eth0 inet dhcp

ฉันจะกดปุ่มเพื่อรวมกันหรือเรียงลำดับคีย์ใด


7
หากคุณไม่สะดวกในการแก้ไขไฟล์ในเทอร์มินัลที่ใช้ตัวแก้ไขเทอร์มินัลเช่นviหรือvimฉันขอแนะนำให้ใช้ตัวแก้ไขแบบกราฟิกที่ต้องการgeditเปิด แทนที่ด้วยsudo vi gksu gedit
Aditya

5
หรือใช้sudo nanoมันยังบรรทัดคำสั่ง แต่มากง่ายกว่า vi
Warren Hill

คำตอบ:


125

คุณอาจอยู่ในโหมดแก้ไข / แทรก คุณต้องพิมพ์ลำดับต่อไปนี้:

  1. Escเพื่อออกจากโหมดแก้ไขและทางเลือกกลับไปที่โหมดคำสั่ง
  2. :+ w+ q, เริ่มต้นด้วย:(โคลอน) จากนั้นกดwและในที่สุดqเพื่อwพิธีและq uit (หรือเพียงแค่:wการเขียนโดยไม่ต้องเลิก)
  3. จากนั้นกดEnterเพื่อใช้งาน

18

ฉันมักจะกดESCค้างไว้แล้วShiftกดzสองครั้ง เช่นเดียวกับที่คุณต้องการพิมพ์ตัวอักษร Z สองตัวในโปรแกรมแก้ไขคำ :) บันทึกเอกสารของคุณและปิดโปรแกรมแก้ไข


4
โอ้กะและดับเบิล Z, สิ่งที่เป็นตรรกะการออกแบบที่อยู่เบื้องหลังที่ผมสงสัยว่า "สิ่งที่เป็นคำสั่งที่ใช้งานง่ายอย่างน้อยเราก็สามารถสร้าง" อูบุนตูบางครั้ง pisses ฉันปิดอย่างบ้า
S ..

4
@ Sam ฉันต้องการ nitpick ที่ vi ไม่มีส่วนเกี่ยวข้องกับ ubuntu โดยเฉพาะ Ubuntu เปิดตัวครั้งแรกเมื่อปี 2004 ในขณะที่ vi ถูกสร้างขึ้นโดย Bill Joy ราวปี 1976 โดยได้รับแรงบันดาลใจจาก ed (ย้อนหลังไปถึงปี 1971) ซึ่งหมายความว่าทางลัดใน vi จะมาก่อนสิ่งเหล่านั้นในยูทิลิตี้อื่น ๆ ที่ยังใช้กันทั่วไปในปัจจุบัน โดยบังเอิญรุ่นแรกของ emacs ซึ่งมีทางลัดแปลก ๆ แตกต่างกันออกวางตลาดเมื่อปีพ. ศ. 2519 ความพยายามในการกำหนดมาตรฐานก็เกิดขึ้นมากมายในภายหลัง
yoniLavi

ว้าวขอบคุณสำหรับข้อมูล @yoniLavi คะแนนของฉันยังคงเหมือนเดิมดังนั้นหวังว่าความพยายามในการกำหนดมาตรฐานจะก้าวหน้า .. :)
S ..

@ Sam, ปุ่มลัด vi เป็นมาตรฐานที่มากกว่าที่คุณคิด พวกมันแพร่หลายทุกหนทุกแห่ง จวนโปรแกรมใด ๆ สามารถทำเลียนแบบ vi keybindings แม้แต่ปุ่มลัดเริ่มต้นของ Gmail ก็เห็นได้ชัด (สำหรับผู้ใช้ที่เป็นกลุ่ม) ซึ่งอ้างอิงจากปุ่มลัด vi
Wildcard

คีย์ esc ไม่ทำงานอย่างไร โหมดแทรกเพิ่งหยุด
ผู้สร้าง

3

ตรวจสอบว่าคุณมีสิทธิ์ผู้ดูแลระบบ (root) เพื่อแก้ไขไฟล์ ใช้คำสั่งนี้

whoami

หากผลลัพธ์ไม่ใช่ "รูท" แสดงว่าคุณไม่ควรแก้ไขไฟล์

เพื่อเข้าสู่ระบบในฐานะผู้ใช้รูทใช้คำสั่งด้านล่าง

sudo su

หรือ

su

แก้ไขไฟล์

vi /etc/network/interfeces

หลังจากการเปลี่ยนแปลงให้บันทึกไฟล์โดยใช้

  1. กดEscเพื่อเปลี่ยนโหมด
  2. :x เพื่อบันทึกและออกจากไฟล์

นั่นคือทั้งหมด


0

คำถามนี้ได้รับคำตอบมานานแล้ว แต่ในกรณีที่เกิดขึ้นในเครื่องมือค้นหาอีกครั้งลิงค์นี้เป็น cheatsheet เป็นกลุ่มที่ดีที่คุณอาจต้องการคั่นหน้าถ้าคุณใช้กลุ่มมาก

โดยวิธีการคุณสามารถใช้:wqเพื่อบันทึกและออกจากไฟล์ (คุณควรกดปุ่ม esc เพื่อออกจากการแทรกหรือเปลี่ยนโหมดแล้วกดคำสั่ง) และใช้:q!เพื่อออกโดยไม่บันทึก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.