2011-08-18 15 views
8

Si puedo activar el modo de entrada de golpe usando set -o vi, a continuación, pulse Esc seguido por v, me sale una ventana vi que me permite editar un archivo temporal que se ejecuta una vez dejo . En esa ventana, me gustaría disfrutar del resaltado de sintaxis de Vim para scripts Bash. No es suficiente ejecutar :syntax enable. El problema podría estar relacionado con el hecho de que el archivo temporal no tiene .sh final ni un encabezado #!/bin/bash que podría usarse para determinar el tipo de archivo.resaltado de sintaxis en Bash modo de vi-entrada

+0

¿Qué significa la salida 'echo $ EDITOR'? Puede ser que estés llamando 'vi' o' vim' en modo compatible en lugar de 'vim'. 'vim' generalmente puede recoger el tipo de archivo de heurística como la línea shebang. –

+0

¿Sería esta solución aplicable? http://stackoverflow.com/questions/5487338/vim-set-filetype-txt-for-every-new-file-no-name Básicamente establece el tipo de archivo predeterminado si no se detecta uno. – numbers1311407

+0

_El problema puede estar relacionado con el hecho de que el archivo temporal no tiene .sh ending_ Heh, es posible que haya respondido a su propia pregunta .... – RustyTheBoyRobot

Respuesta

7

Agregar a su .vimrc

if expand('%:t') =~?'bash-fc-\d\+' 
    setfiletype sh 
endif 

los archivos temporales son de la forma bash-fc-3537253897, por lo que la expresión coincide si el archivo comienza con bash-fc- y aplica el tipo de archivo.

7

que haría uso de la formulación más corta:

au BufRead,BufNewFile bash-fc-* set filetype=sh 

Creo que este tipo de autocmd es la forma canónica para manejar las asignaciones de tipo de archivo (por lo menos, mi .vimrc tiene un número de ellos).

@Eric Fortis, comuníquese conmigo o corrígeme si hay una razón por la que lo hizo de manera diferente.