2012-11-30 12 views
5

So che esiste già una pletora di domande Vim/Emacs e Solarized quindi sono un po 'titubante nell'aggiungerne un altro, ma non riesco a trovare nessuno che risolva questo problema esatto.Differenze solarizzate tra Vim ed Emacs

Il problema è che lo stesso file sembra molto diverso in Vim rispetto a Emacs quando entrambi gli editor sono configurati per utilizzare il tema solarized-dark. E quello che non riesco a capire è se si tratta di un problema con Solarized o solo una fondamentale differenza tra Vim ed Emacs.

Ecco quello che sto lavorando con:

Per consentire a Emacs di visualizzare correttamente il colore di sfondo, è necessario impostare esplicitamente TERM a xterm-16color. Tuttavia, i colori sembrano esattamente gli stessi sia che io stia eseguendo gli editor in un terminale o nelle rispettive GUI (gvim ed emacs senza il flag -nw).

Ecco uno screenshot con Vim a sinistra e Emacs a destra:

enter image description here larger version

In definitiva, voglio ottenere i colori di Emacs a guardare esattamente come i colori Vim. È possibile? In tal caso, si tratta di modificare la versione di Emacs della combinazione di colori? Oppure, questa è solo una differenza fondamentale tra i due editori che non possono essere modificati?

risposta

4

non scrivo in Ruby, ma il modo in generale mi piacerebbe affrontare la situazione da Emacs sarebbe questo:

  • Spostare il punto alla parola che a suo parere non è dipinto correttamente, quindi Mxcustomize-face Questo riempirà automaticamente il minibuffer con il nome del viso sotto il punto e una volta premuto RET si aprirà un buffer di personalizzazione, in cui è possibile modificare il rendering del volto. Sembra che almeno alcune delle differenze possano essere rimosse in questo modo.

  • Le principali modalità di modifica in genere associano una faccia (normalmente una di tipo font-lock) con un determinato gruppo lessicale nella lingua di destinazione. Dovresti indagare su quali opzioni e su come esattamente la modalità Ruby assegna i volti agli elementi di sintassi della lingua. Probabilmente le regolazioni globali del viso saranno troppo estreme (potrebbero influenzare anche altre modalità), quindi se si potesse modificare la modalità Ruby solo per associare diversi gruppi di sintassi con le facce senza modificare le facce, sarebbe una scelta preferibile.

  • È possibile verificare il livello della decorazione. Normalmente le modalità di linguaggio in Emacs utilizzano la modalità Blocco font per dipingere il testo, alcune modalità offrono più o meno colori, a seconda del livello. Maggiori informazioni qui: http://www.gnu.org/software/emacs/manual/html_node/elisp/Levels-of-Font-Lock.html

  • È anche possibile che la modalità Ruby in origine non enfatizzi alcuni caratteri che si desidera sottolineare (segni di numero e virgolette). Se ciò non è ottenibile modificando l'associazione di elementi di sintassi con facce e né per livello di decorazione, è possibile provare ad aggiungere più parole chiave alla modalità Blocco carattere, come descritto qui: http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Lock.html

  • Sembra anche che tu volessi visualizza caratteri di spazi in qualche modo http://emacswiki.org/emacs/ShowWhiteSpace#toc7 Ecco alcune informazioni su come farlo, ma ha anche informazioni sul margine per mostrare la lunghezza massima della linea.

  • È possibile alternare la visualizzazione dei numeri di riga con il comando M-xlinum.

PS. Fai attenzione anche alla versione della GUI e la versione del terminale potrebbe avere schemi di colorazione diversi. La versione del terminale potrebbe utilizzare meno colori in generale e di solito si adopererebbe per ottenere un contrasto più elevato, quindi quello della GUI.

4

Con lo stesso Solarized colorscheme, si otterrà la stessa tavolozza di colori (ovvero set di colori scelti) in entrambi gli editor. Ciò che è ancora diverso è il modo in cui gli editor analizzano la sintassi del tipo di file (vale a dire quanti diversi elementi di sintassi vengono rilevati) e come gli elementi di sintassi analizzati sono raggruppati per evidenziare i gruppi.

Vim (Non posso parlare per Emacs) utilizza gruppi di sintassi specifici del tipo di file (ad esempio vimCommand) con sono quindi collegati a un insieme fisso di definizioni di evidenziazione (Statement in questo esempio). Il colorscheme fornisce i colori per quelle definizioni; le convenzioni possono essere trovate a :help group-name (ma non tutte le definizioni di sintassi aderiscono necessariamente completamente a loro).

Cosa significa questo per te? Puoi confrontare le differenze e (in Vim) personalizzare la mappatura tramite i comandi :hi link ..., ma è molto lavoro, per ogni tipo di file che usi. E dipende ancora da come funziona l'analisi. Immagino che alla fine deciderete su un editore o l'altro; nel frattempo, non mi preoccuperei troppo delle differenze.