Come abilito l'evidenziazione della sintassi per .bash_aliases in vim?


19

Sto lavorando per riorganizzare il mio .bashrc. Ho spostato i miei alias in .bash_aliases(che provengono da .bashrc, ma non riesco a capire come abilitare l'evidenziazione della sintassi per questo file. vimSembra incapace di capire in quale lingua si trova il file. Funziona bene .bashrc. Qualche idea?

Risposte:


12

Vai a vim ed esegui:

:echo $VIMRUNTIME

Di solito il valore sarà simile a:
/ usr / share / vim / vim72
Quindi modifica (usando root) il file /usr/share/vim/vim72/filetype.vim
Cerca bashrc.
Troverai una linea simile a questa:

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


Modifica la riga e aggiungi il tuo nome file (.bash_aliases).

Questo è tutto, ora dovrebbe funzionare.


Perfetto! Questo ha risolto il mio problema.
Matteo,

5
Non dovresti modificare la distribuzione di vim (file in / usr / share / vim). Le tue modifiche potrebbero essere sovrascritte quando aggiorni vim. Invece, dovresti creare il tuo script che faccia lo stesso (o aggiungendo quella linea al tuo vimrc lo farebbe).
idbrii,

11

La risposta è in questo: vimdoc - setf ma per lanciarti un osso, se vuoi solo far funzionare l'evidenziazione della sintassi e della sintassi puoi fare:

  :setf bash

Un'altra possibilità che ho appena realizzato quando stavo rispondendo a un'altra domanda VIM era che potresti anche aggiungere questa sezione al tuo file .vimrc e abiliterà automaticamente l'evidenziazione della sintassi per il file .bash_aliases ogni volta che lo modifichi senza bisogno di un modeline o dover manualmente digitare : setf bash ogni volta che si apre il file.

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

In terzo luogo, come sottolinea Mugen Kenichi di seguito nei commenti, puoi anche aggiungere una modeline al file .bash_alias anche come tale:

# vim: set filetype=bash: 

e / o aggiungi una modeline al tuo file bash vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull

@Mugen Kenichi - Oh buona cattura lì! Non ho mai usato la modeline ma l'ho già vista nei file.
Pharaun,

3
Questo mi ha davvero aiutato molto, grazie ragazzi. Una cosa che dovevo fare, era che dovevo impostare il tipo di file su sh anziché bash, ma probabilmente avrei dovuto trovare un buon file bash vim, poiché ciò avrebbe risolto anche il mio problema: p
icco,

Anche il mio VIM 7.3 di Cygwin non conosce "filetype = bash". Se leggi filetype.vim, "sh" viene usato come tipo di file per tutti gli altri schemi bash.
Bogdan Calmac,

Nonostante ritenga che la .vimrcmodifica sia più affidabile, le modeline VIM sono semplicemente fantastiche! Grazie.
settimane

1

Aggiungi la seguente riga a ~ / .vimrc (creala se non esiste).

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

0

Segui la risposta di @ Pharaun per vim 8 e più file alias. Al fine di ottenere l'evidenziazione corretta c'erano due impostazioni che dovevo fare. Prima nel nuovo file .bash_aliases:

# vim: set filetype=bash

Così come il controllo nel mio .vimrc

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

Si noti che il tipo di file è sh e il carattere jolly * per più nomi di file.

Non sono sicuro del motivo per cui entrambe queste impostazioni sono necessarie. Ho provato a usare solo un'impostazione ma entrambe le combo erano necessarie affinché l'evidenziazione fosse corretta.


Uso vim 8 ma non ho bisogno della modeline (# vim ...). Basta impostare il tipo di file su sh nel mio vimrc fa il trucco. In qualche modo il tipo di file non dovrebbe bashma solo sh.
Jinghao Shi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.