Tại sao không vim nguồn tệp .vimrc của tôi


9

Hôm nay, tôi thấy tôi .vimrckhông có hiệu lực. Nó đã ổn chỉ vài giờ trước.

Khi tôi khởi chạy vim với $vim --plugin, :scriptnameskhông có gì lặp lại: .vimrctập tin không có nguồn gốc. (Lưu ý: /etc/vimrcđã bị xóa để gỡ lỗi sự cố này.)

Sau đó, tôi đã cố gắng để google và tìm thấy $VIMINITbiến đáng ngờ.

Đây là giá trị của $VIMINIT:

$ echo $VIMINIT
set number

Tài liệu Vim về VIMINIT:

 c. Four places are searched for initializations.  The first that exists
    is used, the others are ignored.  The $MYVIMRC environment variable is
    set to the file that was first found, unless $MYVIMRC was already set.
    -  The environment variable VIMINIT (see also |compatible-default|) (*)
       The value of $VIMINIT is used as an Ex command line.
    -  The user vimrc file(s):
                "$HOME/.vimrc"      (for Unix and OS/2) (*)
                "s:.vimrc"          (for Amiga) (*)
                "home:.vimrc"       (for Amiga) (*)
                "$VIM/.vimrc"       (for OS/2 and Amiga) (*)
                "$HOME/_vimrc"      (for MS-DOS and Win32) (*)
                "$VIM/_vimrc"       (for MS-DOS and Win32) (*)
            Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist,
            "_vimrc" is also tried, in case an MS-DOS compatible file
            system is used.  For MS-DOS and Win32 ".vimrc" is checked
            after "_vimrc", in case long file names are used.
            Note: For MS-DOS and Win32, "$HOME" is checked first.  If no
            "_vimrc" or ".vimrc" is found there, "$VIM" is tried.
            See |$VIM| for when $VIM is not set.
    -  The environment variable EXINIT.
       The value of $EXINIT is used as an Ex command line.
    -  The user exrc file(s).  Same as for the user vimrc file, but with
       "vimrc" replaced by "exrc".  But only one of ".exrc" and "_exrc" is
       used, depending on the system.  And without the (*)!

Tôi không thể hiểu tài liệu vim đầy đủ. Có vẻ như $VIMINITcó thể gây rối cho việc khởi động của vim.

Xóa $VIMINIT:

$ VIMINIT=
$ echo $VIMINIT

Vấn đề vẫn còn tồn tại.


2
"Cái đầu tiên tồn tại được sử dụng, những cái khác bị bỏ qua." $VIMINITđã có tiền lệ hơn bất kỳ .vimrctập tin. Và nó đáp ứng quy tắc đến trước được phục vụ trước. Vì vậy, có .vimrcđược bỏ qua.
Sukima

Câu trả lời:


10

Mở rộng câu trả lời của @ mMontu; Vim săn tìm khởi tạo theo thứ tự của danh sách đó cho đến khi tìm thấy. Do $VIMINITbiến này có tiền lệ đối với .vimrctệp, nên nó thỏa mãn tìm kiếm và bất kỳ tùy chọn nào khác sau đó bị bỏ qua .

Lý do nó vẫn không hoạt động sau:

$ VIMINIT=
$ echo $VIMINIT

Có phải (1) bạn đang đặt biến cục bộ không phải là biến môi trường. Điều đó cần phải được xuất khẩu:

$ export VIMINIT=

(2) điều này vẫn không hoạt động vì VIMINITvẫn được xác định:

$ printenv | grep VIMINIT
VIMINIT=

Những gì cần phải xảy ra là loại bỏ khỏi môi trường cùng nhau:

$ unset VIMINIT
$ printenv | grep VIMINIT || echo "Gone"
Gone

(Các lệnh này là đặc thù của Bash. Thay đổi chúng cho phù hợp với vỏ ưa thích của bạn nếu cần.)


Nhưng điều này chỉ hoạt động cho một phiên, những gì về việc không đặt nó chắc chắn? hoặc có thể tìm kiếm bộ biến ở đâu, vì vậy bạn có thể đi và xóa nó?
Feng Yu

8

Bạn có thể hiểu nhầm tài liệu:

 c. Four places are searched for initializations.  The first that exists
    is used, the others are ignored.

Do đó, nếu bạn đang sử dụng VIMINIT, vimrc sẽ không được tải.

-  The environment variable VIMINIT (see also |compatible-default|) (*)
   The value of $VIMINIT is used as an Ex command line.

Bạn đang đặt $ VIMINIT thành lệnh Ex set number, điều này ổn theo tài liệu. Nhưng nếu thích vimrc, bạn nên đưa set numbervào tệp đó thay vì sử dụng $ VIMINIT. Bạn đã đề cập rằng bạn đặt nó thành trống và vimrc của bạn vẫn chưa được tải, nhưng bạn thực sự nên bỏ đặt biến.

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.