Tôi thực sự đã gặp phải tình huống sau đây và điều này thực sự có hiệu quả:
Giả sử bạn phải làm việc trên một tệp với quyền root, nhưng bạn muốn có .vimrc của riêng mình mà không cần gọi "-u". Vì vậy, tôi đã bắt đầu "plugin" sau:
let g:realuser=system('w | grep $(ps w | grep ' . getpid() . ' | head -n1 | awk "{ print \$2 }") | awk "{ print \$1 }"')
nếu $USER == 'root'
let g:vimrc=system('printf /home/%s/.vimrc '. g:realuser)
nếu có thể đọc được tệp (g:vimrc)
exec ":source " .g:vimrc
hoàn thành
cuối cùng
cuối cùng
Tôi gọi nó là "realuser.vim" và "có" nó trong .vimrc (/root/.vimrc) của thư mục gốc.
Nếu hiện tại bạn đã đăng nhập vào máy chủ của mình qua SSH hoặc qua Gnome trên Ubuntu, bạn sẽ truy cập "su -" và đăng nhập bằng quyền root. Sau đó, bạn chuyển sang thư mục làm việc của mình và mở tệp. Tập lệnh phát hiện người dùng thực đăng nhập vào máy là "yourlogin". Sau đó, nó sẽ kiểm tra xem tệp ".vimrc" có tồn tại trong /home/yourlogin/ hay không. Vì vậy, nó là và tải nó.
Vấn đề của tôi là trong /home/yourlogin/.vimrc tôi có những dòng sau:
nguồn ~/.vim/plugin/someplugin.vim
Vậy hãy đoán xem. /root/.vimrc tải /home/yourlogin/.vimrc và do đó đăng ký /root/.vim/plugin/someplugin.vim, không tồn tại vì nó chỉ có trong /home/yourlogin/.vim
Làm cách nào để nói với vim rằng tệp nguồn chỉ có trong /home/yourlogin/.vim/ bằng cách sử dụng đường dẫn tương đối hoặc thứ gì đó tương tự?
tương đối tương đương với:nguồn
Đúng:thời gian chạy
.
nguồn ~/.vim/plugin/someplugin.vim
trở nên
plugin thời gian chạy/someplugin.vim
Với điều này, miễn là bạn thích nghi với nó'đường dẫn thời gian chạy'
tùy chọn đường dẫn trong và nó sẽ hoạt động.
Ngoài ra, bạn có thể thay đổi $HOME
Giá trị của là nội bộ đối với Vim; điều này ảnh hưởng đến ~
Một phần mở rộng của, cũng:
:let $HOME = '/home/yourlogin'
Tôi là một lập trình viên xuất sắc, rất giỏi!