: wq trong Vim không lưu


8

Tôi đang cố gắng sử dụng :wqđể lưu tệp văn bản tôi đã chỉnh sửa trong Vim, nhưng khi tôi nhập, :wqtôi gặp lỗi

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

Khi tôi thêm !để :wqthích :wq!, tôi có được điều này:

"/etc/dhcp/dhcpd.conf"

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

Các tập tin tôi muốn chỉnh sửa là dhcpdtrên /etc/dhcpdđường dẫn.

Tôi có thể làm cái này như thế nào?


Thích :xhoặc ZZđể thoát và lưu. Nó sẽ chỉ viết về sự thay đổi.
Hauleth

Câu trả lời:


14

Bạn cần mở tệp bằng quyền siêu người dùng như sau:

sudo vi /etc/dhcp/dhcpd.conf

chỉnh sửa tập tin bằng cách nhấn ivà sau đó lưu và thoát bằng cách nhấn Escvà sau đó :wqhoặc :xhoặc chỉ :wđể lưu.


Cảm ơn Riking đã gợi ý sudoedit: bạn có thể sử dụng sudoedit /path/to/file/filenameđể chỉnh sửa các tệp thuộc sở hữu của root chứ không phải sử dụng sudo <editor> /pat/to/file/filename. Điều này hữu ích cho các máy cấp doanh nghiệp hoặc máy sản xuất kể từ khi sudoedit đăng nhập vào /var/log/auth.log.

Nếu bạn muốn thay đổi trình chỉnh sửa mặc định cho sudoedit, hãy làm như sau:

sudo update-alternatives --config editor

và sau đó nhấn Returnvà chọn trình soạn thảo bạn chọn và nhấn lại Return.


Xem thêm: Một cuộc thảo luận về redit về lý do tại sao sudoedit có thể là lợi thế


3
Tôi thích sudoeditcho những tình huống này - nó tạo ra một bản sao tạm thời, chạy trình chỉnh sửa và sao chép kết quả. Nếu trước đây bạn đã chọn nanocho lệnh đó, hãy chạy EDITOR=vi sudoedit /etc/file.
Đạp xe

1
@Riking: Cảm ơn vì sudoedit, thậm chí còn không biết nó tồn tại. Tuy nhiên, đã đi qua điều này trong khi googling sudoedit. Tôi sẽ đề xuất nó, nhưng hãy để lại cho người dùng nếu họ thấy cần thiết phải sử dụng.
việc

sudoeditcũng chọn ra EDITORbiến, việc cài đặt nó dễ dàng hơn so với cấu hình các lựa chọn thay thế
muru

9

/etcbao gồm tất cả các tệp cấu hình để chỉnh sửa các tệp theo /etcbạn cần có quyền siêu người dùng nhưng đôi khi chúng tôi quên sử dụng sudo. nhưng tại thời điểm đó chúng ta cũng có thể sử dụng

:w !sudo tee %

sau đó nhập mật khẩu quản trị viên của bạn

:q!

để thoát thành công


1
Bạn có thể thêm cmap w!! w !sudo tee > /dev/null %vào của bạn .vimrcđể cho phép tiết kiệm thông qua phương pháp này với :w!!. Nếu bạn quan tâm đến lý do tại sao phương pháp này hoạt động, hãy xem stackoverflow.com/questions/2600783/ mẹo
Gerhard Burger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.