Bagaimana cara mengaktifkan penyorotan sintaks untuk .bash_aliases di vim?

19

Saya sedang bekerja untuk mengatur ulang .bashrc. Saya memindahkan alias saya ke .bash_aliases(yang bersumber dari .bashrc, tapi saya tidak tahu cara mengaktifkan penyorotan sintaks untuk file ini. vimTampaknya tidak dapat mengetahui bahasa apa yang digunakan untuk file tersebut. Ini berfungsi dengan baik untuknya .bashrc. Ada ide?

Matius
sumber

Jawaban:

12

Pergi ke vim dan jalankan:

:echo $VIMRUNTIME

Biasanya nilainya akan seperti:
/ usr / share / vim / vim72
Kemudian edit (menggunakan root) file /usr/share/vim/vim72/filetype.vim
Cari bashrc.
Anda akan menemukan garis yang terlihat seperti ini:

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


Edit baris dan tambahkan nama file Anda (.bash_aliases) ke dalamnya.

Itu dia, sekarang harusnya berhasil.

Bilah Iftach
sumber
Sempurna! Ini menyelesaikan masalah saya.
Matius
5
Anda tidak boleh mengedit distribusi vim (file di / usr / share / vim). Perubahan Anda mungkin ditimpa saat Anda memperbarui vim. Sebagai gantinya, Anda harus membuat skrip Anda sendiri yang melakukan hal yang sama (atau menambahkan baris itu ke vimrc Anda akan melakukannya).
idbrii
11

Jawabannya ada di ini: vimdoc - setf tetapi untuk melemparkan Anda tulang, jika Anda hanya ingin sintaks & sintaks menyoroti bekerja, Anda dapat melakukan:

  :setf bash

Kemungkinan lain yang baru saya sadari ketika saya menjawab pertanyaan VIM lainnya adalah Anda juga dapat menambahkan bagian ini ke file .vimrc Anda dan secara otomatis akan mengaktifkan penyorotan sintaks untuk file .bash_aliases setiap kali Anda mengeditnya tanpa perlu modeline atau harus secara manual ketik : setf bash setiap kali Anda membuka file.

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

Ketiga seperti Mugen Kenichi di bawah dalam komentar menunjukkan, Anda juga bisa menambahkan modeline ke file .bash_alias juga:

# vim: set filetype=bash: 
Firaun
sumber
dan / atau tambahkan modeline ke file bash Anda vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull
@Mugen Kenichi - Oh tangkapan bagus di sana! Saya tidak pernah menggunakan modeline tapi saya pernah melihatnya di file sebelumnya.
Firaun
3
Ini sangat membantu saya, terima kasih kawan. Satu hal yang harus saya lakukan, adalah saya harus mengatur filetype ke sh bukan bash, tapi saya mungkin harus mencari file bash vim yang baik sebagai gantinya, karena itu akan menyelesaikan masalah saya juga: p
icco
VIM 7.3 saya dari cygwin juga tidak tahu tentang "filetype = bash". Jika Anda membaca filetype.vim, "sh" digunakan sebagai filetype untuk semua pola bash lainnya.
Bogdan Calmac
Terlepas dari kenyataan saya pikir hasil .vimrcedit lebih dapat diandalkan, modelines VIM hanya luar biasa! Terima kasih.
4wk_
1

Tambahkan baris berikut ke ~ / .vimrc (buat jika tidak ada).

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

Tindak lanjuti jawaban @ Pharaun untuk vim 8 dan beberapa file alias. Untuk mendapatkan sorotan yang benar ada dua pengaturan yang harus saya lakukan. Pertama di file .bash_aliases baru:

# vim: set filetype=bash

Serta cek di .vimrc saya

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

Perhatikan tipe file adalah sh serta wildcard * untuk beberapa nama file.

Tidak yakin mengapa kedua pengaturan ini diperlukan. Saya mencoba menggunakan hanya satu pengaturan tetapi kedua kombo diperlukan agar penyorotan menjadi benar.

Shadoath
sumber
Saya menggunakan vim 8 tetapi saya tidak membutuhkan modeline (# vim ...). Hanya mengatur filetype ke sh di vimrc saya melakukan trik. Entah bagaimana filetype seharusnya tidak bashhanya adil sh.
Jinghao Shi