ฉันจะเปิดใช้งานการเน้นไวยากรณ์สำหรับ. bash_aliases เป็นกลุ่มได้อย่างไร


19

.bashrcผมทำงานในแผนกของฉัน ฉันย้ายนามแฝงของฉันไปที่.bash_aliases(ซึ่งมีที่มา.bashrcแต่ฉันไม่สามารถหาวิธีการเปิดใช้งานการเน้นไวยากรณ์สำหรับไฟล์นี้vimดูเหมือนว่าไม่สามารถคิดได้ว่าไฟล์ภาษานั้นทำงานได้ดีสำหรับ.bashrcแนวคิดใดบ้าง

คำตอบ:


12

ไปที่กลุ่มและเรียกใช้:

:echo $VIMRUNTIME

โดยปกติค่าจะเป็นดังนี้:
/ usr / share / vim / vim72
จากนั้นแก้ไข (โดยใช้ root) ไฟล์/usr/share/vim/vim72/filetype.vim
ค้นหา bashrc
คุณจะพบบรรทัดที่มีลักษณะดังนี้:

au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")


แก้ไขบรรทัดและเพิ่มชื่อไฟล์ (.bash_aliases) ของคุณ

แค่นี้แหละมันควรจะใช้ได้แล้ว


ที่สมบูรณ์แบบ! นี่เป็นการแก้ไขปัญหาของฉัน
Matthew

5
คุณไม่ควรแก้ไขการกระจายเป็นกลุ่ม (ไฟล์ใน / usr / share / vim) การเปลี่ยนแปลงของคุณอาจถูกเขียนทับเมื่อคุณอัปเดตกลุ่ม แต่คุณควรสร้างสคริปต์ของคุณเองที่ทำเช่นเดียวกัน (หรือเพิ่มบรรทัดนั้นใน vimrc ของคุณ)
idbrii

11

คำตอบอยู่ในนี้: vimdoc - setfแต่จะทำให้คุณมีกระดูกถ้าคุณแค่ต้องการให้ไวยากรณ์ & การเน้นไวยากรณ์ทำงานคุณสามารถทำได้:

  :setf bash

ความเป็นไปได้อีกอย่างที่ฉันเพิ่งรู้เมื่อฉันตอบคำถาม VIM อีกข้อคือคุณสามารถเพิ่มหัวข้อนี้ในไฟล์. vimrcของคุณและมันจะเปิดใช้งานการเน้นไวยากรณ์โดยอัตโนมัติสำหรับไฟล์. bash_aliasesทุกครั้งที่คุณแก้ไขโดยไม่ต้องใช้แบบจำลอง พิมพ์: setf bashทุกครั้งที่คุณเปิดไฟล์

if has("autocmd")
  augroup bashalias
    autocmd BufRead,BufNewFile .bash_aliases set filetype=bash
  augroup END
endif

ประการที่สามในฐานะ Mugen Kenichi ด้านล่างในความคิดเห็นคุณสามารถเพิ่ม modeline ให้กับไฟล์. bash_aliasได้เช่นกัน:

# vim: set filetype=bash: 

และ / หรือเพิ่ม modeline ลงในไฟล์ bash ของคุณvimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull

@Mugen Kenichi - โอ้เยี่ยมมาก! ฉันไม่เคยใช้ modeline แต่เคยเห็นมาก่อนในไฟล์
ฟาโรห์

3
มันช่วยฉันได้มากจริงๆขอบคุณมาก สิ่งหนึ่งที่ฉันต้องทำคือฉันต้องตั้งไฟล์เป็น sh แทนที่จะทุบตี แต่ฉันน่าจะหาไฟล์ bash vim ที่ดีแทนซึ่งจะช่วยแก้ปัญหาของฉันได้เช่นกัน: p
icco

VIM 7.3 ของฉันจาก cygwin ยังไม่รู้เกี่ยวกับ "filetype = bash" หากคุณอ่านผ่าน filetype.vim จะใช้ "sh" เป็นไฟล์ประเภทสำหรับรูปแบบการทุบตีอื่น ๆ ทั้งหมด
Bogdan Calmac

แม้ว่าที่จริงแล้วฉันคิดว่าการ.vimrcแก้ไขมีความน่าเชื่อถือมากกว่า แต่โมเดล VIM นั้นยอดเยี่ยมมาก! ขอบคุณ
4wk_

1

เพิ่มบรรทัดต่อไปนี้ลงใน ~ / .vimrc (สร้างหากไม่มีอยู่)

au BufNewFile,BufRead .bash_aliases call SetFileTypeSH("bash")

0

ติดตามคำตอบของ @ Pharaun สำหรับไฟล์ vim 8 และหลาย alias เพื่อให้การเน้นถูกต้องมีการตั้งค่าสองอย่างที่ฉันต้องทำ ที่หนึ่งในไฟล์. bash_aliases ใหม่:

# vim: set filetype=bash

เช่นเดียวกับการตรวจสอบใน. vimrc ของฉัน

if has("autocmd")
  augroup bashalias
    autocmd BufRead,BufNewFile *_aliases set filetype=sh
  augroup END
endif

ขอให้สังเกต filetype คือการดวลจุดโทษเช่นเดียวกับสัญลักษณ์แทน * ชื่อไฟล์หลาย

ไม่แน่ใจว่าทำไมจึงต้องมีการตั้งค่าทั้งสองนี้ ฉันพยายามใช้การตั้งค่าเดียว แต่ต้องใช้คอมโบทั้งสองเพื่อให้การเน้นถูกต้อง


ฉันใช้ vim 8 แต่ฉันไม่ต้องการ modeline (# vim ... ) เพียงแค่ตั้งประเภทไฟล์ที่จะดวลจุดโทษใน vimrc ของฉันทำเคล็ดลับ อย่างใด filetype ไม่ควรแต่เพียงbash sh
Jinghao Shi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.