ทำไมจะไม่เป็นกลุ่มไฟล์. vimrc ของฉัน


9

วันนี้ฉันพบว่าฉัน.vimrcไม่มีผล มันก็โอเคแค่ไม่กี่ชั่วโมงที่ผ่านมา

เมื่อฉันเปิดตัวเป็นกลุ่มที่มี$vim --plugin, :scriptnamesไม่มีอะไรสะท้อน: .vimrcไฟล์ที่ไม่ได้มา (หมายเหตุ: /etc/vimrcถูกลบเพื่อแก้ไขปัญหานี้)

จากนั้นฉันก็ลอง google และพบ$VIMINITตัวแปรที่น่าสงสัย

นี่คือค่าของ$VIMINIT:

$ echo $VIMINIT
set number

เอกสารที่เป็นกลุ่มเกี่ยวกับ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 (*)!

ฉันไม่สามารถเข้าใจเอกสารที่เป็นกลุ่มได้อย่างสมบูรณ์ ดูเหมือนว่า$VIMINITอาจเลอะการเริ่มต้นเป็นกลุ่ม

ล้าง$VIMINIT:

$ VIMINIT=
$ echo $VIMINIT

ปัญหายังคงมีอยู่


2
"ครั้งแรกที่มีการใช้งานส่วนที่เหลือจะถูกละเว้น" $VIMINITมีแบบอย่างมากกว่า.vimrcไฟล์ใด ๆ และมันเป็นไปตามกฎมาก่อนได้ก่อน ดังนั้นใช่.vimrcถูกละเว้น
Sukima

คำตอบ:


10

ขยายคำตอบของ @ mMontu; Vim ล่าเพื่อเริ่มต้นตามลำดับของรายการนั้นจนกว่าจะพบหนึ่ง ตั้งแต่$VIMINITเอาแบบอย่างตัวแปรกับ.vimrcไฟล์มันสอดคล้องกับการค้นหาและตัวเลือกอื่น ๆ ใด ๆ หลังจากที่ถูกละเลย

เหตุผลที่มันยังไม่ทำงานหลังจาก:

$ VIMINIT=
$ echo $VIMINIT

คือ (1) คุณกำลังตั้งค่าตัวแปรท้องถิ่นไม่ใช่ตัวแปรสภาพแวดล้อม ต้องมีการส่งออก:

$ export VIMINIT=

(2) สิ่งนี้ยังใช้งานไม่ได้เพราะVIMINITยังมีการกำหนด:

$ printenv | grep VIMINIT
VIMINIT=

สิ่งที่ต้องเกิดขึ้นคือการลบออกจากสภาพแวดล้อมทั้งหมด:

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

(คำสั่งเหล่านี้เฉพาะ Bash เปลี่ยนให้เหมาะสมกับเชลล์ที่คุณต้องการหากต้องการ)


แต่วิธีนี้ใช้ได้กับเซสชันเท่านั้นแล้วการยกเลิกการตั้งค่าเป็นอย่างไร หรืออาจค้นหาว่าชุดตัวแปรอยู่ที่ไหนคุณสามารถไปและลบมันได้หรือไม่
Feng Yu

8

คุณอาจเข้าใจผิดเอกสาร:

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

ดังนั้นถ้าคุณใช้ VIMINIT, vimrc จะไม่ถูกโหลด

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

คุณกำลังตั้งค่า $ VIMINIT เป็นคำสั่ง Ex set numberซึ่งเป็นไปตามเอกสาร แต่ถ้าต้องการ vimrc คุณควรรวมset numberไว้ในไฟล์นั้นแทนที่จะใช้ $ VIMINIT คุณบอกว่าคุณได้ตั้งค่าให้ว่างเปล่าและ vimrc ของคุณยังไม่ได้โหลด แต่คุณควรยกเลิกการตั้งค่าตัวแปร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.