ฉันจะตั้งค่าการเน้นไวยากรณ์ของ vim เพื่อจัดการนามสกุลไฟล์เป็นไฟล์ html ได้อย่างไร
ฉันใช้เทมเพลต ez ดังนั้นนามสกุลของไฟล์คือ.ezt
. แต่ส่วนมากเป็นโค้ด html ปกติ
ฉันจะตั้งค่าการเน้นไวยากรณ์ของ vim เพื่อจัดการนามสกุลไฟล์เป็นไฟล์ html ได้อย่างไร
ฉันใช้เทมเพลต ez ดังนั้นนามสกุลของไฟล์คือ.ezt
. แต่ส่วนมากเป็นโค้ด html ปกติ
คำตอบ:
คุณยังสามารถใส่ลงใน. vimrc ของคุณ:
au BufReadPost *.ezt set syntax=html
.myspecialdotfile
เช่นชื่อไฟล์ มันต้องการดาวอยู่ที่ไหนสักแห่งเพื่อทำงานแม้ว่าในทางทฤษฎีจะไม่จำเป็นก็ตาม
.vimrc
ไฟล์สำหรับ Dockerfiles ที่มีนามสกุลสำหรับวัตถุประสงค์ที่แตกต่างกัน autocmd BufNewFile, BufRead Dockerfile * set filetype = docker เพียงแค่ใช้Dockerfile*
ป้องกันการเน้นไวยากรณ์ไม่ให้ทำงานเมื่อใช้งานvi Dockerfile
- การเพิ่มแบ็กสแลชช่วยให้สามารถทำงานสำหรับDockerfile
/ Dockerfile.something
และDockerfilesomething
:set syntax=html
:set syntax
จะส่งคืนการไฮไลต์ไฟล์ที่ใช้ในปัจจุบัน
ลองดูที่นี้หัวข้อ Wikia เป็นกลุ่ม เคล็ดลับที่เป็นประโยชน์:
ดังที่ได้กล่าวถึงคำตอบอื่น ๆ คุณสามารถใช้คำสั่ง vim set เพื่อตั้งค่าไวยากรณ์ :set syntax=<type>
ซึ่ง<type>
เป็นสิ่งที่ต้องการperl
, html
, php
ฯลฯ
มีกลไกอื่นที่สามารถใช้เพื่อควบคุมการเน้นไวยากรณ์ที่เรียกว่าfiletype
หรือเรียกft
สั้น ๆ คล้ายกับไวยากรณ์คุณกำหนดประเภทดังนี้: :set filetype=html
. ประเภทไฟล์อื่น ๆ ที่มีperl
, php
ฯลฯ
บางครั้งกลุ่ม "ลืม" ว่าจะใช้ไวยากรณ์อะไรโดยเฉพาะอย่างยิ่งถ้าคุณผสมสิ่งต่างๆเช่น php และ html เข้าด้วยกัน ใช้แป้นพิมพ์ลัดCtrl+ L( <C-L>
) เพื่อรับกลุ่มเพื่อรีเฟรชการไฮไลต์
โปรดทราบว่า:set syntax=xml
ไฮไลต์อย่างถูกต้อง แต่ดูเหมือนจะล้มเหลวเมื่อมีการพยายามระบุไฟล์โดยอัตโนมัติ (เช่นกำลังทำงานgg=G
)
เมื่อฉันเปลี่ยนไป:set filetype=xml
ใช้การไฮไลต์ทำงานได้อย่างถูกต้องและไฟล์ที่เยื้องอย่างถูกต้อง
ในไฟล์. php (หรือไฟล์ html) คุณสามารถใช้Vim Modelineเพื่อบังคับคำสั่งหรือการตั้งค่าบางอย่าง:
1 /* vim: syntax=javascript
2 *
3 * .submit_norefresh()
~
~
au ...
ตั้งค่าที่เกี่ยวข้องกับไวยากรณ์ในการ~/.vimrc
ถูกละเว้นของฉันสำหรับไฟล์บางไฟล์ (น่าจะเป็นเพราะข้อมูลเมตาที่แก้ไข?) นอกเหนือจากการคัดลอกเนื้อหาไฟล์นั้นไปยังไฟล์ใหม่แล้วการตั้งค่า modeline ที่ด้านบนของไฟล์นั้นจะใช้งานได้ เช่นสำหรับสคริปต์ BASH การเพิ่มบรรทัดที่สอง# vim: syntax=sh
หลังจาก Shebang (บรรทัดแรก:) #!/bin/bash
ดูเหมือนจะทำงานได้อย่างน่าเชื่อถือ เนื่องจากโดยพื้นฐานแล้วเป็น "ความคิดเห็น" ฉันจึงใส่ทั้งสองบรรทัดไว้ในsbb
ข้อมูลโค้ด ("shebang bash") ของฉัน
หากต้องการทำให้เป็นอัตโนมัติให้เพิ่มบรรทัดนี้ใน~/.vimrc
:
autocmd BufNewFile,BufRead *.ezt set filetype=html
หากคุณต้องการทำสำหรับไฟล์ปัจจุบันให้พิมพ์:
:set filetype=html
คุณยังสามารถแทนที่syntax
แทนfiletype
แต่filetype
ส่งผลกระทบต่อสิ่งต่างๆมากกว่าsyntax
(รวมถึงการเน้นไวยากรณ์กฎการเยื้องและปลั๊กอิน) ดังนั้นโดยทั่วไปคุณควรใช้filetype
เว้นแต่คุณต้องการให้มีผลsyntax
เท่านั้น