ipython-notebook - notebook - jupyter r
¿Cómo cambio el indicador automático a 2 espacios en la notebook IPython? (6)
Me parece que el desarrollo de funciones en el portátil IPython me permite trabajar rápidamente. Cuando estoy satisfecho con los resultados, copio y pego en un archivo. El indicador automático es de 4 espacios, pero el estilo de codificación para la sangría en mi empresa es de 2 espacios. ¿Cómo cambio el autoindent a 2 espacios?
Además de añadir
IPython.Cell.options_default.cm_config.indentUnit = 2;
a su archivo custom.js
según lo sugerido por Jakob, ¡asegúrese de borrar la memoria caché de su navegador también antes de reiniciar la computadora portátil ipython!
Además, es posible que primero tenga que crear el ~/.config/ipython/profile_default/static/custom/
(use echo $(ipython locate default)
para encontrar su directorio predeterminado) antes de agregar el archivo custom.js
.
Basado en this pregunta y las opciones encontradas here :
En su archivo custom.js (la ubicación depende de su sistema operativo) ponga
IPython.Cell.options_default.cm_config.indentUnit = 2;
En mi máquina, el archivo se encuentra en ~/.ipython/profile_default/static/custom
Actualizar:
En IPython 3, la llamada simple ya no funciona, por lo que es necesario colocar la configuración dentro de un controlador de eventos apropiado. Una posible solución podría ser
define([
''base/js/namespace'',
''base/js/events''
],
function(IPython, events) {
events.on("app_initialized.NotebookApp",
function () {
IPython.Cell.options_default.cm_config.indentUnit = 2;
}
);
}
);
Creo que ahora es mejor envolverlo en un controlador de eventos para que se cargue una vez por carga de notebook:
$([IPython.events]).on(''app_initialized.NotebookApp'', function(){
IPython.CodeCell.options_default[''cm_config''][''indentUnit''] = 2;
});
De la documentación oficial de CodeMirror Code Cells:
- Abra un cuaderno Ipython
- Crear una celda de código, por ejemplo, presionando
b
- Abra la consola de JavaScript de su navegador y ejecute lo siguiente
retazo:
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{indentUnit:2}
}
}
config.update(patch)
- Vuelva a cargar la página del cuaderno en el navegador, por ejemplo, presionando
F5
Esto lo arreglará permanentemente. Supongo que esto funciona solo en versiones recientes, aunque no estoy seguro.
La documentación oficial tiene un ejemplo respondiendo a esta pregunta específica . Esto me funcionó con IPython 4.
Resumen : pegue lo siguiente en la consola javascript de su navegador
var cell = Jupyter.notebook.get_selected_cell();
var config = cell.config;
var patch = {
CodeCell:{
cm_config:{indentUnit:2}
}
}
config.update(patch)
El ajuste es persistente. Puede retrotraer cambiando : 2
por : null
.
La respuesta de AdamAL es correcta. Funciono para mi
Sin embargo, solo cambia la sangría en el cuaderno de Jupyter y deja la sangría en el editor de Jupyter sin verse afectado.
Una forma más directa de cambiar la sangría es editar directamente los archivos de configuración de Jupyter en el directorio .jupyter/nbconfig
. Este directorio contiene 2 archivos:
edit.json
notebook.json
La opción que debe establecer en cualquiera de las dos es indentUnit
. Aquí está el contenido de mis archivos de configuración de Jupyter:
edit.json:
{
"Editor": {
"codemirror_options": {
"indentUnit": 2,
"vimMode": false,
"keyMap": "default"
}
}
}
notebook.json:
{
"CodeCell": {
"cm_config": {
"indentUnit": 2
}
}
}
Con este enfoque, he establecido la sangría predeterminada en 2 tanto en Jupyter Notebook como en Jupyter Editor.