ฉันจะทำให้คำสั่งไฮไลต์ใน. vimrc มีผลทันทีด้วย Vim 7.4 ได้อย่างไร


9

ฉันมีหลายhighlightคำสั่งใน.vimrcไฟล์ของฉัน ใน Vim 7.3 สิ่งเหล่านี้จะมีผลทันทีหลังจาก Vim เริ่มขึ้น หลังจากอัปเดตเป็น Vim 7.4 นี่ไม่ใช่กรณีอีกต่อไป Vim ใช้การเน้นค่าเริ่มต้นในตอนแรก เมื่อฉันโหลด.vimrcครั้งที่สองโดยเรียกใช้source ~/.vimrcงานการไฮไลต์ทำงานตามที่ฉันต้องการ

คุณควรจะทำซ้ำปัญหานี้โดยใช้ขั้นตอนต่อไปนี้:

  1. ทำสำเนา.vimrcไฟล์ของคุณ

  2. แทนที่ด้วยไฟล์ที่มีเพียงเส้น~/.vimrchighlight Type ctermfg=28 cterm=bold

  3. ทำงานvim dummy.cในเทอร์มินัล 256 สี (เช่นเทอร์มินัล GNOME)

  4. พิมพ์intลงในบัฟเฟอร์ intควรจะปรากฏในตัวอักษรปกติและจะมีสีเขียวอ่อนซึ่งไม่ได้เป็นสิ่งที่ฉันต้องการ

  5. :source ~/.vimrcเข้าสู่ ตอนนี้intควรปรากฏเป็นตัวอักษรหนาและเป็นสีเขียวเข้ม

อ้างอิงจากบทความวิธีการควบคุม / สีกำหนดค่าเสียงเรียกเข้าก็ควรจะโอเคที่จะเพียงแค่ใส่คำสั่งลงไปhighlight .vimrcบทความบอกว่าคุณควรใส่syntax enableหลังจากที่highlightคำสั่ง แต่ไม่ได้สร้างความแตกต่างใด ๆ

การแก้ไขครั้งแรกของฉันคือการย่อหน้าแต่ละhighlightคำสั่งในด้วย.vimrc autocmd VimEnter *สิ่งนี้ใช้ได้กับไฟล์บางประเภท แต่ไม่เหมาะสำหรับไฟล์ประเภทอื่น (ไฟล์ C เป็นตัวอย่าง)

อะไรคือสาเหตุของพฤติกรรมนี้? ฉันจะมีhighlightคำสั่งดำเนินการอย่างไรเมื่อเริ่มต้น Vim เพื่อให้มีผลบังคับใช้กับบัฟเฟอร์ทั้งหมดในระหว่างเซสชัน Vim ทั้งหมด


ฟังดูเหมือนปัญหา542
Christian Brabandt

ใช่เมื่อเพิ่มset compatibleที่จุดเริ่มต้นการ.vimrcเน้นไวยากรณ์จะทำงานตามที่คาดไว้ ดังนั้นนี่คือข้อผิดพลาดที่เกิดขึ้นจริง
Wolfgang Jeltsch

ฉันได้นำหน้าhighlightคำสั่งด้วยautocmd ColorScheme *ซึ่งเสนอให้เป็นวิธีแก้ปัญหาในรายงานข้อผิดพลาด มันยังไม่ทำงาน ☹
Wolfgang Jeltsch

ตอนนี้ฉันกำลังเขียนรูปแบบสีของตัวเองซึ่งเห็นได้ชัดว่ายังแก้ไขข้อผิดพลาดนี้
Wolfgang Jeltsch

คริสเตียนคุณช่วยเขียนความคิดเห็นของคุณเป็นคำตอบได้ไหม? ท้ายที่สุดนี่คือคำตอบที่ถูกต้องสำหรับปัญหาของฉัน หรือมีวิธีอื่นในการจัดการกับคำถามที่เปิดเผยข้อบกพร่องจริง ๆ หรือไม่
Wolfgang Jeltsch

คำตอบ:


5

นี้จะไม่มีคำตอบที่ชัดเจนและปัญหาของคุณได้เสียงเหมือนปัญหา542 เห็นได้ชัดว่าคุณสามารถแก้ไขได้โดยเขียน colorcheme พื้นฐานของคุณเองแทนที่จะเขียนข้อความเหล่านั้นhi ...ลงใน. vimrc ของคุณโดยตรง


ฉันคิดว่ามันเป็นเพราะปัญหาที่เป็นกลุ่มนี้; ดังนั้นตัวแทนของคุณน่าจะเป็นคำตอบที่ถูกต้องสำหรับปัญหาของฉัน
Wolfgang Jeltsch

3

ที่จริงคุณไม่ควรใส่ไฮไลท์ที่กำหนดเองของคุณใน vimrc ของคุณ แต่ในไฟล์ไวยากรณ์ของศุลกากร

ไฟล์เหล่านี้ควรอยู่ใน~/.vim/after/syntax/filetype.vimตำแหน่งที่filetypeเป็นประเภทไฟล์ที่ต้องการ หากคุณพอใจกับไฟล์ไวยากรณ์เป็นส่วนใหญ่ แต่ต้องการเพิ่มคำสั่งเล็กน้อยคุณสามารถทำตามขั้นตอนเหล่านี้ (นำมาจาก:h mysyntaxfile-add):

  1. สร้างไดเรกทอรีในนั้นเรียกว่า "after / syntax" สำหรับ Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. เขียนสคริปต์เป็นกลุ่มที่มีคำสั่งที่คุณต้องการใช้ ตัวอย่างเช่นหากต้องการเปลี่ยนสีสำหรับไวยากรณ์ C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. เขียนไฟล์นั้นในไดเรกทอรี "after / syntax" ใช้ชื่อของไวยากรณ์โดยเพิ่ม ".vim" สำหรับไวยากรณ์ C ของเรา:

    :w ~/.vim/after/syntax/c.vim
    

แค่นั้นแหละ. ครั้งต่อไปที่คุณแก้ไขไฟล์ C สีของความคิดเห็นจะแตกต่างกัน คุณไม่ต้องรีสตาร์ท Vim ด้วยซ้ำ

:h mysyntaxfileเป็นสถานที่ที่ดีในการรับข้อมูลเกี่ยวกับวิธีการทำไฟล์ไวยากรณ์ของคุณให้ถูกต้อง นอกจากนี้ยังเรียนรู้ Vimscript ฮาร์ด Wayเป็นหลายบทในหัวข้อนี้


3
ถ้าฉันต้องการเปลี่ยนการเน้นสำหรับไฟล์ทุกประเภท ตัวอย่างเช่นฉันต้องการให้สีของความคิดเห็นเป็นสีน้ำเงินเข้มไม่ว่าจะเป็นไฟล์ประเภทใด
Wolfgang Jeltsch

ฉันลองใช้วิธีที่คุณแนะนำมากขึ้นหรือน้อยลง ฉันเพิ่มไฟล์.vimrc/highlighting.vimสร้างไดเรกทอรี.vimrc/syntax/afterและเพิ่มลิงก์สัญลักษณ์หลายแบบในรูปแบบ * filetype * .vimที่ชี้ไป.vimrc/highlighting.vimยังไดเรกทอรีนี้ การเน้นไวยากรณ์ยังคงไม่ทำงาน
Wolfgang Jeltsch

@WolfgangJeltsch Yup โพสต์ของฉันและ doc กล่าวว่าไดเรกทอรีที่ควรจะเป็น~/.vim/after/syntaxไม่ได้~/.vimrc
statox

ถูกต้อง. อย่างไรก็ตามนี่เป็นเพียงการพิมพ์ผิดในความคิดเห็นของฉัน อันที่จริงผมทำงานอยู่ในไดเรกทอรี.vimและเน้นไวยากรณ์ไม่ได้ทำงานอาจจะเป็นเพราะปัญหานี้ 542
โวล์ฟกัง Jeltsch

Nope! ไม่ทำงาน.
Yar

1

สำหรับสิ่งที่คุ้มค่าฉันมีปัญหากับ MacVim (8.1.950 (155)) วางคำสั่งไฮไลต์หลังจากcolorschemeใน. vimrc แก้ไขให้ฉัน เช่น:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

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