Cài đặt và plugin khi root (`sudo vim`)?


15

Thật là bực bội khi tôi cần chỉnh sửa một tập tin gốc và sử dụng sudo vim somefile.confvà tôi không thể sử dụng bất kỳ khóa và cài đặt và plugin nào của mình.

Có cách nào để có được tất cả các tùy chỉnh của tôi khi tôi cần chỉnh sửa bằng root không?

Tôi đang sử dụng vim-plug cho plugin của mình.


5
Trên một lưu ý phụ: sudo vim fileđược viết tốt hơn là sudo -e file(với điều kiện bạn đặt biến môi trường EDITOR=vim).
lcd047

@ lcd047: bạn nên đưa nhận xét đó thành câu trả lời
static_rtti

Câu trả lời:


14

Thay vì mở vim là root, bạn chỉ có thể lưu dưới dạng root bằng cách chuyển hướng đến tee. Đây là một ví dụ:

:w !sudo tee % > /dev/null

Điều này có thể hữu ích cho bí danh trong .vimrc của bạn, tôi sử dụng :Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
Điều này hữu ích cho I did a bunch of editing and then realized I should have used sudoedit, nhưng trong trường hợp chung tôi sẽ đề nghị sử dụng sudo -e/ sudoedit.
jamessan

7

Hai điều:

  1. Sử dụng $ sudo -e fileđể chỉnh sửa filevới $EDITOR. Thêm export EDITOR=/path/to/vimnếu $EDITORchưa được đặt.

  2. Đi vani là một cách tuyệt vời để chống lại nghiện plugin của bạn.


-1 để đề xuất phục hồi nghiện plugin (J / K, thực sự không có downvote)
Robbie Wxyz

3
Lưu ý rằng điều này không chạy vim như root, như sudo vimkhông. Việc chỉnh sửa diễn ra như người dùng bình thường của bạn và sau đó sudo xử lý cập nhật tệp gốc.
jamessan

Lưu ý: có hai tùy chọn tương tự như sudo: -E-e. -Ecó nghĩa là "môi trường bảo quản" và đây không phải là môi trường bạn muốn. -elần lượt, có nghĩa là "không chạy lệnh, nhưng chỉnh sửa tệp với quy trình được xác định".
iksemyonov

3

Dường như tất cả những gì bạn phải làm là root symlink ~/.vimrc~/.vim/của bạn.

Chỉ cần chạy bằng root:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

Và rằng nên làm điều đó!

(PS tôi đã tìm ra điều này ngay bây giờ và muốn chia sẻ với bất kỳ noobs nào khác. Xin vui lòng cho tôi biết nếu có một cách tốt hơn.)


1
Điều này thường có thể gây ra vấn đề trong đó một số tệp liên quan đến vim sẽ được ghi dưới dạng root trong thư mục chính của bạn và sau đó bạn sẽ gặp lỗi khi chạy cấu hình vim của chính bạn với tư cách là người dùng của riêng bạn.
Caleb

0

Nếu bạn biết trước rằng bạn cần chỉnh sửa một tệp dưới dạng root, sử dụng các lệnh sudoedit <file>hoặc sudo -e <file>sẽ giúp bạn thiết lập trong một môi trường đặc biệt để làm như vậy với các tùy chọn trình soạn thảo thông thường của bạn. Một bản sao của tệp được tạo và trình soạn thảo của bạn được khởi chạy để chỉnh sửa nó (với tư cách là người dùng của bạn). Khi bạn thoát tập tin được sao chép trở lại vị trí ban đầu của nó là root.

Đó là cách an toàn và được khuyến nghị nhất, nhưng trong trường hợp a) bạn không nhận ra trước thời hạn, bạn sẽ cần phải viết dưới dạng root hoặc b) muốn chỉnh sửa và lưu các thay đổi gia tăng tại chỗ, bạn sẽ cần một thứ khác. Cuối cùng, giải pháp sử dụng sudo tee được đề xuất bởi smpl chắc chắn đang đi đúng hướng, nhưng có một số cải tiến nhỏ có thể được thực hiện để xử lý các trường hợp cạnh. Đáng chú ý là sự khác biệt trong việc xử lý dấu nhắc mật khẩu sudo trong giao diện GUI so với giao diện điều khiển đáng chú ý.

Một cách dễ dàng hơn để thiết lập tính năng này là sử dụng plugin vim-eunuch . Nó có vấn đề đặc biệt này và một vài thứ tiện dụng khác được cuộn lại thành một gói tiện dụng. Cách sử dụng đơn giản như gọi điện :SudoWrite. Tôi thậm chí sử dụng một ánh xạ truy cập nhẹ hơn một chút:

cmap w!! call SudoWrite()

Điều đó sẽ giúp bạn có khả năng viết bất kỳ tập tin nào dưới dạng root bằng cách sử dụng :w!!.


-1

Một tùy chọn khác là chạy sudo -E vim somefile.confđể chỉnh sửa, sẽ bảo vệ môi trường của bạn, do đó .vimrc, plugin và của bạn sẽ được sử dụng.


Này, mẹo hay đấy! Đó là cách hữu ích cho Vi và rất nhiều lệnh khác.
Robbie Wxyz

3
Điều này có cùng tác dụng phụ liên kết cấu hình của bạn vào thư mục gốc của root: cụ thể là mọi thao tác vim hoặc plugin ghi dữ liệu trạng thái sẽ làm như vậy trong thư mục chính của bạn. Những tệp này cuối cùng được sở hữu bởi root và sẽ gây ra lỗi sau này vì người dùng bình thường của bạn sẽ không thể tiếp tục sử dụng chúng.
Caleb
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.