Viết file vim như siêu người dùng?


10

Đây là một vấn đề về khả năng sử dụng thường xảy ra với tôi:

Tôi mở tệp hệ thống chỉ đọc bằng vim, thậm chí chỉnh sửa nó, vì tôi không đủ chú ý hoặc vì vim trên hệ thống bị cấu hình kém. Khi các thay đổi của tôi được thực hiện, tôi bị mắc kẹt khi phải ghi chúng vào một tệp tạm thời hoặc mất chúng, bởi vì: w! sẽ không làm việc

Có lệnh vim (: W !!!) cho phép bạn viết bộ đệm hiện tại như một siêu người dùng không? (Vim sẽ hỏi mật khẩu sudo hoặc su của bạn một cách tự nhiên)


các câu hỏi liên quan (không trùng lặp chính xác): superuser.com/questions/23428/vim-sudo-vim-bad-idea .. superuser.com/questions/106865/, .. và từ SO, stackoverflow.com/questions/1005 /
Lọ

1
SO chắc chắn là một bản sao, tuy nhiên hai câu hỏi SU giải quyết một vấn đề riêng được giải quyết bằng sudoeditlệnh. Câu hỏi này tập trung nhiều hơn vào việc quên gõ nó ở vị trí đầu tiên và nâng lên sau khi bắt đầu trình chỉnh sửa.
heavyyd

Câu trả lời:


15
:w !sudo tee % >/dev/null`

Giải thích: Với !, bạn có thể thực hiện các chương trình. Bằng cách thêm tiền tố vào: w, nội dung của tệp (nội dung bạn có trong vim, không phải tệp gốc, chính xác hơn là: bộ đệm) sẽ được cung cấp cho lệnh trên đầu vào tiêu chuẩn. %được thay thế bằng tên tệp và >/dev/nulltránh nội dung được in lại ra màn hình (đó là hành vi thông thường của tee).

Tôi đã tìm thấy một cách thậm chí ngắn hơn. ddkhông in ra thiết bị xuất chuẩn để bạn có thể lưu điều null.

:w !sudo dd of=%

​‍

Tương tự là :r, trong đó chèn đầu ra của lệnh đã cho, ví dụ bạn có thể chèn ngày hiện tại vào tệp của mình bằng cách sử dụng:r !date


Cảm ơn rất nhiều, bạn đã làm cho cuộc sống của tôi tốt hơn rất nhiều! (Brian cũng vậy)
zimbatm

Tôi vừa mới thêm một phương pháp thứ hai.
Mary

Điều đó thực sự gọn gàng!
Anthony Giorgio

không hoạt động với undofiles
Christian Brabandt

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.