¿Cómo habilito el resaltado de sintaxis para .bash_aliases en vim?


19

Estoy trabajando en reorganizar mi .bashrc. Moví mis alias .bash_aliases(que proviene de .bashrc, pero no puedo encontrar la manera de habilitar el resaltado de sintaxis para este archivo. vimParece incapaz de averiguar en qué idioma está el archivo. Funciona bien .bashrc. ¿Alguna idea?

Respuestas:


12

Ve a vim y corre:

:echo $VIMRUNTIME

Por lo general, el valor será algo así como:
/ usr / share / vim / vim72
Luego edite (usando root) el archivo /usr/share/vim/vim72/filetype.vim
Busque bashrc.
Encontrará una línea que se ve así:

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


Edite la línea y agregue su nombre de archivo (.bash_aliases).

Eso es todo, ahora debería funcionar.


¡Perfecto! Esto resolvió mi problema.
Mateo

55
No debe editar la distribución vim (archivos en / usr / share / vim). Sus cambios pueden sobrescribirse cuando actualice vim. En su lugar, debe crear su propio script que haga lo mismo (o agregar esa línea a su vimrc lo haría).
idbrii

11

La respuesta está en esto: vimdoc - setf pero para tirar un hueso, si solo quieres que la sintaxis y el resaltado de sintaxis funcionen, puedes hacer:

  :setf bash

Otra posibilidad de la que me di cuenta cuando estaba respondiendo a otra pregunta de VIM fue que también podría agregar esta sección a su archivo .vimrc y habilitaría automáticamente el resaltado de sintaxis para el archivo .bash_aliases cada vez que lo edite sin necesidad de una línea de modelado o tener que hacerlo manualmente escriba : setf bash cada vez que abra el archivo.

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

En tercer lugar, como señala Mugen Kenichi a continuación en los comentarios, también puede agregar una línea de modelo al archivo .bash_alias también como tal:

# vim: set filetype=bash: 

y / o agregue una línea de modo a su archivo bash vimdoc.sourceforge.net/htmldoc/options.html#modeline
matthias krull

@Mugen Kenichi - ¡Oh, buena captura! Nunca uso modeline pero lo he visto en archivos antes.
Pharaun

3
Esto realmente me ayudó mucho, gracias chicos. Una cosa que tenía que hacer, era establecer el tipo de archivo en sh en lugar de bash, pero probablemente debería encontrar un buen archivo bash vim, ya que eso también resolvería mi problema: p
icco

Mi VIM 7.3 de cygwin tampoco sabe acerca de "filetype = bash". Si lee a través de filetype.vim, "sh" se usa como tipo de archivo para todos los demás patrones de bash.
Bogdan Calmac

A pesar de que creo que la .vimrcedición es más confiable, ¡las modelinas de VIM son simplemente increíbles! Gracias.
4wk_

1

Agregue la siguiente línea a ~ / .vimrc (créelo si no existe).

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

0

Siga la respuesta de @ Pharaun para vim 8 y múltiples archivos de alias. Para que el resaltado sea correcto, hubo dos configuraciones que tuve que hacer. Primero en el nuevo archivo .bash_aliases:

# vim: set filetype=bash

Así como el cheque en mi .vimrc

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

Observe que el tipo de archivo es sh , así como el comodín * para varios nombres de archivo.

No estoy seguro de por qué se necesitan ambas configuraciones. Traté de usar solo una configuración, pero se necesitaban ambos combos para que el resaltado fuera correcto.


Uso vim 8 pero no necesito la modeline (# vim ...). Simplemente configurar el tipo de archivo para sh en mi vimrc hace el truco. De alguna manera, el tipo de archivo no debería bashsino solo sh.
Jinghao Shi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.