Je trouve que le développement de fonctions dans le cahier IPython me permet de travailler rapidement. Lorsque je suis satisfait des résultats, je fais un copier-coller dans un fichier. L'auto-indentation est de 4 espaces, mais le style de codage pour l'indentation dans mon entreprise est de 2 espaces. Comment changer l'auto-indentation en 2 espaces?
Basé sur cette question et les options trouvées ici :
Dans votre fichier custom.js (l'emplacement dépend de votre système d'exploitation), mettez
IPython.Cell.options_default.cm_config.indentUnit = 2;
Sur ma machine, le fichier se trouve dans ~/.ipython/profile_default/static/custom
Dans IPython 3, l'appel standard ne fonctionne plus, il est donc nécessaire de placer le paramètre dans un gestionnaire d'événements approprié. Une solution possible pourrait ressembler à
define([
'base/js/namespace',
'base/js/events'
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.indentUnit = 2;
}
);
}
);
La documentation officielle a un exemple répondant à cette question spécifique . Cela a fonctionné pour moi avec IPython 4.
Résumé : collez ce qui suit dans la console javascript de votre navigateur
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{indentUnit:2}
}
}
config.update(patch)
Le réglage est conservé. Vous pouvez annuler en échangeant : 2
pour : null
.
De la documentation officielle pour les cellules de code CodeMirror:
b
fragment:
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{indentUnit:2}
}
}
config.update(patch)
F5
Cela le réparera définitivement. Je suppose que cela ne fonctionne que sur les versions récentes, mais je n'en suis pas sûr!
La réponse d'AdamAL est correcte. Ça a marché pour moi.
Cependant, il modifie uniquement l'indentation dans le bloc-notes Jupyter et ne modifie pas l'indentation dans l'éditeur Jupyter.
Un moyen plus direct de modifier l'indentation consiste à modifier directement les fichiers de configuration de Jupyter dans le .jupyter/nbconfig
répertoire. Ce répertoire contient 2 fichiers:
edit.json
notebook.json
L'option que vous devez définir dans l'un ou l'autre est indentUnit
. Voici le contenu de mes fichiers de configuration Jupyter:
edit.json:
{
"Editor": {
"codemirror_options": {
"indentUnit": 2,
"vimMode": false,
"keyMap": "default"
}
}
}
notebook.json:
{
"CodeCell": {
"cm_config": {
"indentUnit": 2
}
}
}
Avec cette approche, j'ai défini l'indentation par défaut à 2 dans le bloc-notes Jupyter et l'éditeur Jupyter.
Je crois que c'est maintenant mieux enveloppé dans un gestionnaire d'événements à charger une fois par chargement de bloc-notes:
$([IPython.events]).on('app_initialized.NotebookApp', function(){
IPython.CodeCell.options_default['cm_config']['indentUnit'] = 2;
});
Si vous utilisez jupyterlab, il semble y avoir un moyen plus simple:
1) Cliquez sur le menu jupyterlab Paramètres> Éditeur de paramètres avancés
2) Cliquez sur "Notebook" dans le volet gauche, assurez-vous que vous êtes sur "Raw View"
3) Dans le volet droit, sous "Remplacements d'utilisateurs", entrez ceci:
{
"codeCellConfig": {
"tabSize": 2
}
}
Si vous regardez les valeurs par défaut du système, cela vous donnera un indice sur ce qui peut être remplacé et vous pouvez répéter cela pour d'autres paramètres.
J'ai essayé cela sur Google Platform AI Notebook qui utilise Jupyterlab.
En plus d'ajouter
IPython.Cell.options_default.cm_config.indentUnit = 2;
dans votre fichier custom.js
comme suggéré par Jakob, assurez-vous également de vider le cache de votre navigateur avant de redémarrer le bloc-notes ipython!
En outre, vous devrez peut-être d'abord créer le répertoire ~/.config/ipython/profile_default/static/custom/
(Utilisez echo $(ipython locate default)
pour trouver votre répertoire par défaut) avant d'ajouter le fichier custom.js
.