Bắt đầu Vim với tư cách là người dùng của tôi với quyền root


10

Tôi có các tệp Vim tùy chỉnh của mình trong ~/.vimvà cài đặt trong ~/.vimrc. Tuy nhiên, đôi khi tôi phải chỉnh sửa một số tệp trong /etcvà như vậy.
Nếu tôi bắt đầu Vim như thế này:

$ sudo vim /etc/rc.conf

Tôi mất cấu hình của mình vì Vim sử dụng cấu hình mặc định của nó. Vậy: làm cách nào tôi có thể chạy Vim với quyền root để chỉnh sửa tệp mà không làm mất cài đặt của người dùng (có trong thư mục chính của tôi)?
Tôi đã thử:

$ su username -c "vim /usr/lib/python2.7/setuptools/dist.py"

nhưng Bash cho tôi Permission denied. Tuy nhiên, lệnh trên hoạt động ví dụ cho : /etc/acpi/handler.sh. Tại sao vậy?

Lưu ý: tên người dùng không phải là root.

Câu trả lời:


15

Thay vì sudo vim /etc/rc.confsử dụng sudoedit /etc/rc.confhay sudo -e /etc/rc.conf. Bạn có thể cần đặt biến môi trường EDITOR thành vim. Điều này sẽ tự chạy vim như người dùng bình thường, sử dụng cấu hình bình thường của bạn, trên một bản sao của tệp mà nó sẽ sao chép lại khi bạn thoát.


Giải pháp tốt đẹp! Tôi cũng sẽ kiểm tra điều này.
rubik

Tôi đã thử sudoedit /etc/rc.confsudo -e /etc/rc.confnó mở vim, nhưng ~ / .vimrc của tôi không được tải. Tôi đang làm gì sai?
apparat

@apparat Hãy thử export EDITOR=vimđầu tiên - nó có thể đang cố chạy vi, điều mà tôi không biết nếu nó tải vimrc ngay cả khi nó là vim.
Random832

Vâng, tôi nghĩ rằng đây là câu trả lời tốt nhất. Cảm ơn cả hai người.
rubik

@ Random832 export EDITOR=vimđã làm việc. Tôi nghĩ vi không được cài đặt trên hệ thống của tôi và chỉ là một liên kết tượng trưng cho vim. Cảm ơn
apparat

6

Bạn có thể sử dụng -uđể cho vim biết tập tin RC nào sẽ tải. ví dụ

sudo vim -u ~user/.vimrc /etc/rc.conf

Nếu gõ mà mỗi khi bạn cần làm điều đó là tẻ nhạt, hãy tạo một bí danh:

alias sudovim='sudo vim -u ~user/.vimrc'

Lưu ý rằng vim -ucó thể khiến các plugin hoặc các tệp RC bị lỗi nếu chúng tải các tệp khác liên quan đến $ HOME - $ HOME hiện là thư mục gốc của root chứ không phải người dùng. Điều này có thể được giải quyết bằng các liên kết tượng trưng trong thư mục gốc của root hoặc bằng các đường dẫn tuyệt đối mã hóa cứng.


Thật tuyệt vời, cảm ơn bạn. Tôi đã giải quyết như thế này : alias svim="HOME=/home/user && sudo vim -u $HOME/.vimrc".
rubik

1

sudo vim -S /home/user/.vimrc /etc/rc.conf

Điều này tương đương với:

sudo vim /etc/rc.conf + :source /home/user/.vimrc

và cũng có thể được đặt bí danh:

alias svim='sudo vim -S /home/user/.vimrc'

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.