Jak włączyć podświetlanie składni dla .bash_aliases w vimie?

19

Pracuję nad reorganizacją mojego .bashrc. Przenieśliłem swoje aliasy do .bash_aliases(które pochodzą z .bashrc, ale nie jestem w stanie wymyślić, jak włączyć podświetlanie składni dla tego pliku. vimWydaje się, że nie jestem w stanie ustalić, w jakim języku jest plik. Działa dobrze .bashrc. Masz jakieś pomysły?

Mateusz
źródło

Odpowiedzi:

12

Przejdź do vima i uruchom:

:echo $VIMRUNTIME

Zwykle wartość będzie taka:
/ usr / share / vim / vim72
Następnie edytuj (przy użyciu katalogu głównego) plik /usr/share/vim/vim72/filetype.vim
Wyszukaj bashrc.
Znajdziesz linię, która wygląda następująco:

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


Edytuj wiersz i dodaj do niego swoją nazwę pliku (.bash_aliases).

To wszystko, teraz powinno działać.

Iftach Bar
źródło
Doskonały! To rozwiązało mój problem.
Matthew
5
Nie powinieneś edytować dystrybucji vim (pliki w / usr / share / vim). Twoje zmiany mogą zostać zastąpione podczas aktualizacji vima. Zamiast tego powinieneś stworzyć swój własny skrypt, który robi to samo (lub dodanie tego wiersza do vimrc zrobiłoby to).
idbrii
11

Odpowiedź jest następująca: vimdoc - setf, ale aby rzucić ci kość, jeśli chcesz, aby składnia i podświetlanie składni działały, możesz:

  :setf bash

Inną możliwością, którą właśnie zdałem sobie sprawę, kiedy odpowiadałem na inne pytanie VIM, było to, że możesz również dodać tę sekcję do pliku .vimrc i automatycznie włączać podświetlanie składni dla pliku .bash_aliases za każdym razem, gdy go edytujesz, bez potrzeby modelowania lub ręcznego wpisz : setf bash przy każdym otwarciu pliku.

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

Po trzecie, jak zauważa Mugen Kenichi w komentarzach, możesz również dodać modelkę do modelkę do pliku .bash_alias również jako taką:

# vim: set filetype=bash: 
Pharaun
źródło
i / lub dodaj modeline do swojego pliku bash vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull
@Mugen Kenichi - Oh good catch there! Nigdy nie używam modeliny, ale widziałem ją wcześniej w plikach.
Pharaun,
3
To naprawdę bardzo mi pomogło, dzięki chłopaki. Jedną rzeczą, jaką musiałem zrobić, to musiałem ustawić typ pliku do sh zamiast bash, ale powinien chyba tylko znaleźć dobry bash plik vim zamiast, jak to rozwiązać mój problem tak dobrze: P
ICCO
Mój VIM 7.3 z cygwin również nie wie o „filetype = bash”. Jeśli czytasz plik filetype.vim, „sh” jest używane jako typ pliku dla wszystkich innych wzorów bash.
Bogdan Calmac
Pomimo tego, że uważam, że .vimrcedycja jest bardziej niezawodna, modele VIM są po prostu niesamowite! Dzięki.
4wk_
1

Dodaj następujący wiersz do ~ / .vimrc (utwórz go, jeśli nie istnieje).

au BufNewFile,BufRead .bash_aliases call SetFileTypeSH("bash")
Rudger
źródło
0

Śledź odpowiedź @ Pharaun na vim 8 i wiele plików aliasów. Aby poprawne wyróżnienie było prawidłowe, musiałem wykonać dwa ustawienia. Najpierw w nowym pliku .bash_aliases:

# vim: set filetype=bash

Jak również sprawdzenie w moim .vimrc

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

Zauważ, że typ pliku to sh, a także * symbol wieloznaczny dla wielu nazw plików.

Nie jestem pewien, dlaczego oba te ustawienia są potrzebne. Próbowałem użyć tylko jednego ustawienia, ale oba kombinacje były potrzebne do poprawnego podświetlenia.

Shadoath
źródło
Używam vima 8, ale nie potrzebuję modeliny (# vim ...). Wystarczy ustawić typ pliku na sh w moim vimrc. Jakoś typ pliku nie powinien, bashale po prostu sh.
Jinghao Shi