2016-02-11 11 views
9

Si tratta di un problema di evidenziazione della sintassi nel mio notebook iPython? Posso rimuoverlo? Questo accade in alcune delle mie cellule, ma non in altre.Perché alcune variabili e commenti nel mio taccuino IPython sono rossi?

ipython red text

sto vedendo this iPython notebook.

+0

appare certamente come un problema di evidenziazione della sintassi. Il parser javascript potrebbe essere incasinato. Questa è l'unica ragione per cui riesco a pensare. Non sono sicuro di quello che stai cercando per quanto riguarda la risposta ... –

+0

Non ho familiarità con il modo in cui i notebook iPython gestiscono l'evidenziazione della sintassi - come è coinvolto un parser js? Non vedo nulla nella mia configurazione di juypter relativa all'evidenziazione della sintassi. Le risposte potrebbero indicare perché questo sta accadendo o come utilizzare l'evidenziatore di sintassi. – Matt

+0

I taccuini iPython (ora Jupyter) funzionano con un server Web Tornado (un framework Python). L'HTML e i CSS stanno facendo le cose da mostrare, ma l'evidenziazione della sintassi dinamica è gestita da Javascript. –

risposta

16

Questo perché il rientro è rovinato. Per coerenza il parser codemirror creerà una riga rossa se non è indentato di 4 spazi (o se è indentato con le schede, a seconda della versione di codemirror). Il parser ha un caso limite che in effetti evidenzia solo alcune righe di tesi in rosso, non entrerò nei dettagli, ma se rientri in 4 spazi funzionerà.

È possibile:

  • selezionare il blocco di codice e premere tab
  • uso alt-click'n'drag verticalmente per posizionare più cursori di fronte al vostro codice e premere la barra spaziatrice abbastanza tempo per fare la corretta trattino 4 spazio.

L'impostazione del rientro su 2 è possibile, ma complessa e non consigliata. 4 spazio è la norma python.

+0

Sto costruendo dei quaderni che usano la convenzione 2-spazio, quindi ho finito col cambiare il rientro tramite [questa risposta] (http://stackoverflow.com/a/24615436/232638). – Matt

+0

Questa è una brutta cosa da fare. È meglio convertire il notebook in 4 schede. I file del notebook sono JSON così facili da elaborare. – Matt

0

Questa è la soluzione ufficiale da parte della Jupyter Notebook documentation:

  1. Aprire un notebook Jupyter
  2. selezionare una cella Codice
  3. Aprire la console JavaScript del browser ed eseguire il seguente frammento:

    var cell = Jupyter.notebook.get_selected_cell(); 
    var config = cell.config; 
    var patch = { 
         CodeCell:{ 
         cm_config:{indentUnit:2} 
         } 
        } 
    config.update(patch) 
    
  4. Ricarica la pagina Notebook

Questa correzione è permanente.

per annullare la modifica ripetere il processo di esecuzione di questo frammento:

var cell = Jupyter.notebook.get_selected_cell(); 
var config = cell.config; 
var patch = { 
     CodeCell:{ 
     cm_config:{indentUnit: null} # only change here. 
     } 
    } 
config.update(patch) 
Problemi correlati