Come posso rendere effettivi i comandi di evidenziazione in .vimrc immediatamente con Vim 7.4?


9

Ho diversi highlightcomandi nel mio .vimrcfile. In Vim 7.3, questi hanno avuto effetto immediatamente dopo l'avvio di Vim. Dopo l'aggiornamento a Vim 7.4, questo non è più il caso. Vim utilizza inizialmente l'evidenziazione predefinita. Quando carico .vimrcuna seconda volta eseguendo source ~/.vimrc, l'evidenziazione funziona come voglio.

Dovresti essere in grado di riprodurre questo problema usando i seguenti passaggi:

  1. Crea una copia del tuo .vimrcfile.

  2. Sostituisci ~/.vimrccon un file che contiene solo la riga highlight Type ctermfg=28 cterm=bold.

  3. Esegui vim dummy.cin un terminale a 256 colori (ad esempio Terminale GNOME).

  4. Digita intnel buffer. L' intdovrebbe apparire in carattere regolare ed essere di colore verde chiaro, che non è quello che voglio.

  5. Enter :source ~/.vimrc. Ora intdovrebbe apparire in grassetto ed essere colorato in verde scuro.

Secondo l'articolo Come controllare / configurare i colori di VIM , dovrebbe essere giusto inserire i highlightcomandi .vimrc. L'articolo dice che dovresti inserire syntax enablei highlightcomandi, ma questo non ha fatto alcuna differenza.

La mia prima correzione è stata anteporre ogni highlightcomando .vimrccon autocmd VimEnter *. Questo ha funzionato per alcuni tipi di file, ma non per altri (i file C sono un esempio).

Qual è la ragione di questo comportamento? Come posso highlighteseguire i comandi all'avvio di Vim in modo che abbiano effetto per tutti i buffer durante l'intera sessione di Vim?


sembra il numero 542
— Christian Brabandt,

Sì, quando si aggiunge set compatibleall'inizio di .vimrc, l'evidenziazione della sintassi funziona come previsto. Quindi questo sembra davvero essere questo bug in azione.
— Wolfgang Jeltsch,

Ho preceduto i highlightcomandi con autocmd ColorScheme *, che è stato proposto come soluzione alternativa nella segnalazione di bug. Non funziona ancora . ☹
— Wolfgang Jeltsch,

Ora sto scrivendo la mia combinazione di colori, che apparentemente funziona anche con questo bug.
— Wolfgang Jeltsch,

Christian, puoi semplicemente scrivere il tuo commento come risposta? Dopo tutto, questa è la risposta giusta al mio problema. O c'è qualche altro approccio per affrontare le domande che rivelano effettivamente i bug?
— Wolfgang Jeltsch,

Risposte:


5

Questa non è una risposta definitiva e il tuo problema sembra il problema 542 . Apparentemente puoi aggirarlo, scrivendo il tuo schema di colori di base, invece di scrivere quelle hi ...dichiarazioni direttamente nel tuo .vimrc.


Penso che sia a causa di questo problema di Vim; quindi la tua risposta sembra davvero essere la risposta corretta al mio problema.
— Wolfgang Jeltsch,

3

In realtà non dovresti mettere i tuoi punti salienti personalizzati nel tuo vimrc ma nei file di sintassi doganali.

Questi file dovrebbero trovarsi ~/.vim/after/syntax/filetype.vimdove si filetypetrova il tipo di file previsto. Se sei soddisfatto principalmente di un file di sintassi ma desideri aggiungere alcuni comandi, puoi seguire questi passaggi (presi da :h mysyntaxfile-add):

  1. Crea una directory lì dentro chiamata "after / sintassi". Per Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Scrivi uno script Vim che contiene i comandi che desideri utilizzare. Ad esempio, per cambiare i colori per la sintassi C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Scrivi quel file nella directory "after / syntax". Utilizzare il nome della sintassi, con ".vim" aggiunto. Per la nostra sintassi C:

    :w ~/.vim/after/syntax/c.vim
    

Questo è tutto. Alla successiva modifica di un file C, il colore del commento sarà diverso. Non è nemmeno necessario riavviare Vim.

:h mysyntaxfileè un buon posto per ottenere informazioni su come correggere i propri file di sintassi. Impara anche Vimscript The Hard Way come diversi capitoli su questo argomento.


2
E se volessi cambiare l'evidenziazione per tutti i tipi di file. Ad esempio, voglio che il colore dei commenti sia blu scuro, indipendentemente dal tipo di file.
— Wolfgang Jeltsch,

Ho provato più o meno l'approccio che hai suggerito. Ho aggiunto un file .vimrc/highlighting.vim, creato una directory .vimrc/syntax/aftere aggiunto diversi collegamenti simbolici del modulo * filetype * .vimche puntano .vimrc/highlighting.vima questa directory. L'evidenziazione della sintassi continua a non funzionare.
— Wolfgang Jeltsch,

@WolfgangJeltsch Yup come il mio post e il dottore dice la directory dovrebbe essere ~/.vim/after/syntaxnon~/.vimrc
— statox

È corretto. Tuttavia, questo era solo un errore di battitura nel mio commento. In realtà, ho lavorato nella directory .vime l'evidenziazione della sintassi non ha funzionato, probabilmente a causa di questo bug 542.
— Wolfgang Jeltsch,

no! non funziona.
— Anno

1

Per quello che vale, ho avuto questo problema con MacVim (8.1.950 (155)). Inserendo l'istruzione highlight dopo colorschemein .vimrc è stato risolto per me. Per esempio:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

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.