Instalé gvim en Fedora y Win7. Descubrí que tanto vim como gvim en Fedora no resaltaban el nombre de la función en el código c, mientras que gvim en win7 sí lo resaltaba.
Encontré que en win7, vim73/syntax/c.vim
tiene las líneas adicionales al final:
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
Si agrego estas líneas en c.vim
Fedora, gvim también puede resaltar el nombre de la función.
Para mantener la portabilidad, solo quiero modificar .vimrc
para resaltar el nombre de la función. Sin embargo, después de agregar estas líneas en el .vimrc
, no funcionó.
Entonces, ¿alguien puede ayudarme? Hice una búsqueda y hay muchas soluciones para resaltar los nombres de las funciones en vim. Pero tengo curiosidad por saber cómo hacer que estas líneas funcionen .vimrc
. ¡Muchas gracias!
vimrc
syntax-highlighting
Tamlok
fuente
fuente
~/.vim/after/syntax/c.vim
lugar..vimrc
?autocmd BufEnter *.c hl ...
, pero deberías guardarloafter/syntax/c.vim
. Cualquier versión moderna de Vim entenderá el.vim/after/
directorio. En Windows, la ruta seríavimfiles/after/...
, por lo que la portabilidad no debería ser un gran problema (especialmente si usa complementos).Respuestas:
La razón de esto es que Vim borra los elementos de sintaxis existentes al configurar la
'syntax'
opción. Esto se hace porque mantener los elementos de sintaxis antiguos conduciría a situaciones extrañas; si tiene un búfer que tienesyntax=foo
y usaset syntax=bar
, terminará con un búfer que tiene resaltado de sintaxis para ambosfoo
ybar
.Cuando Vim se inicia, carga una
vimrc
vez (en el inicio), pero carga los archivos de tipo de archivo y sintaxis cada vez que se configuran las opcionesfiletype
osyntax
, lo que restablecerá los valores que ha establecido en su vimrc.Incluso si no lo restableciera, no sería una buena idea agregarlo a su vimrc, ya que se aplicaría a todos los buffers, y no solo a los buffers con
syntax=c
.El texto a continuación asume Vim en un sistema Unix-y, pero también funcionará para los usuarios de Neovim y Windows:
~/.vim/
con~/.config/nvim/
.~/.vim/
con%USERPROFILE%\vimfiles\
.Anular un archivo completo
La forma más fácil de cambiar algo es simplemente anularlo . Para hacerlo, cree un archivo en
~/.vim/<file>.vim
.<file.vim>
es la ruta relativa a$VIMRUNTIME
(incluidos los subdirectorios). En su ejemplo, debería sersyntax/c.vim
. Se cargará en lugar del archivo en$VIMRUNTIME
.El resultado de esto es que es más fácil hacer cambios: enmendar los archivos de sintaxis existentes puede ser un poco complicado a veces. La desventaja es que no recibirá actualizaciones futuras en el archivo de todo el sistema.
A menudo uso esto como punto de partida para experimentar con archivos de sintaxis, y luego extraigo mis cambios locales a una adición local usando uno de los métodos que se describen a continuación.
Adiciones locales
Hay dos formas de agregar adiciones locales a los archivos de sintaxis, son funcionalmente idénticas y puede usar el método que prefiera.
Syntax
autocmdUse el
Syntax
autocmd:Tenga en cuenta que encadenar varios comandos
|
es problemático aquí, ya que tienden a interpretarse como parte del:syn
comando, por lo que he repetidoautocmd Syntax c
varias veces. Una alternativa sería usar una función:La ventaja es que todos los cambios pueden estar contenidos en un solo archivo. La desventaja es que es un poco feo, especialmente si tiene muchos cambios.
después del directorio
Utilice el directorio de post-:
~/.vim/after/<file>.vim
.Esto se cargará después de
<file>.vim
has, donde<file.vim>
es la ruta relativa a$VIMRUNTIME
(incluidos los subdirectorios). En su ejemplo, debería sersyntax/c.vim
.También vea
:help after-directory
.La ventaja es que es un poco más legible que el autocmd, especialmente si tiene muchos cambios. La desventaja es que necesitará copiar un archivo adicional si desea duplicar su configuración de Vim en diferentes máquinas (esta es una razón importante por la que muchas personas mantienen sus archivos Vim en un repositorio de GitHub, por lo que puede reflejarse fácilmente en las máquinas )
fuente