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.