notebook - Desactivar paréntesis de cierre automático en ipython
jupyter python 3 (8)
Me mantengo actualizado con la rama de desarrollo de ipython (porque ipython es una de las cosas más increíbles de la historia). Recientemente (antes del increíble lanzamiento de ipython 2.0 de ayer) noté que ha comenzado a cerrar automáticamente paréntesis, corchetes, comillas, etc., mientras los escribo. Sucede tanto en la terminal [nada más que yo use en el terminal lo hace] como en las sesiones de los portátiles, así que supongo que fue una elección intencional por parte de los desarrolladores. Puedo respetar que a otras personas les guste esta característica, pero me vuelve completamente loco .
No puedo encontrar ninguna opción en los archivos de configuración. Ni siquiera puedo buscarlo en Google, porque no sé cómo se llama. Lo único que aparece es la característica diferente de paréntesis automáticos . De hecho, encontré esta pregunta , pero eso es antiguo, y sugiere que el comportamiento que estoy viendo no puede suceder.
¿Cómo puedo desactivar esta característica?
[La mayoría de las veces utilizo la interfaz de la computadora portátil, así que simplemente apagarla estaría bien, pero preferiría apagarla tanto en las notebooks como en las sesiones de ipython en la terminal.]
Descubrí que no fue mencionado en otras respuestas. En mi caso (OS X, Jupyter 4.2.0), custom.js se encuentra en ~ / anaconda / lib / python3.5 / site-packages / notebook / static / custom / custom.js
Creo que puede ayudar a alguien como yo.
El comportamiento del notebook es el resultado del complemento CodeMirror autoCloseBrackets . Puede desactivarlo editando ( ipython profile create
con ipython profile create
si aún no lo ha hecho) ~/.ipython/profile_default/static/custom/custom.js
y agregue:
if (IPython.CodeCell) {
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
}
En cuanto a la terminal, no veo el comportamiento de paréntesis que describes. ¿Tal vez tienes un PYTHONSTARTUP definido? IPython ejecuta este archivo de forma predeterminada, que puede desactivar agregando a ~/.ipython/profile_default/ipython_config.py
:
c.InteractiveShellApp.exec_PYTHONSTARTUP = False
En el cuaderno de Jupyter Lab puede desactivar el complemento autoClosingBrackets
en el menú de configuración. Vaya a Settings --> Advanced Settings Editor
y agregue lo siguiente en la sección User Overrides
:
{
"codeCellConfig": {
"autoClosingBrackets": false
}
}
Captura de pantalla
Esto funcionó con JupyterLab 0.32.1 y jupyter_core 4.4.0
Esto es lo que funciona para mí en Jupyter 4.0.6:
require([''notebook/js/codecell''], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
en ~/.jupyter/custom/custom.js
.
Por cierto, si además desea desactivar la sintaxis resaltando los paréntesis que coinciden:
codecell.CodeCell.options_default.cm_config.matchBrackets = false;
Las sugerencias anteriores no funcionaron para mí en Jupyter 4.3.0 con Jupyter Notebook 5.0.0
Descubrí que necesitaba crear un archivo llamado ~/.jupyter/custom/custom.js
con los siguientes contenidos:
var cell = Jupyter.notebook.get_selected_cell();
var patch = {
CodeCell: {
cm_config: {
autoCloseBrackets: false,
}
}
}
cell.config.update(patch);
Tenga en cuenta que el directorio ~/.juypter/custom
no existía antes de hacerlo.
Esto fue pirateado junto con las sugerencias en los documentos v5.0 , y para los lectores futuros estos son los latest
Para Jupyter Notebook 5.1 use lo mismo que para 4.2, es decir, ponga el siguiente fragmento en ~ / .jupyter / custom / custom.js:
require([''notebook/js/codecell''], function (codecell) {
codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})
Si quieres hacerlo solo desde Python:
from notebook.services.config import ConfigManager
c = ConfigManager()
c.update(''notebook'', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})
La respuesta de @ minrk es la base del arreglo, pero deberá envolverlo en una devolución de llamada de inicialización, al menos con IPython-3.1.0
. En su custom.js
:
require([''base/js/namespace'', ''base/js/events''], function(IPython, events) {
events.on(''app_initialized.NotebookApp'', function() {
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
});
});
Gracias a @Mike por su comentario sobre la carga de dependencia RequireJS
de IPython y el puntero a una mejor formulación en IPython / Jupyter Installing Extensions .
Editar para Jupyter 4.0.x
:
La implementación actual de notebooks IPython, Jupyter 4.0.0, renovó las personalizaciones de JS. Ahora usa ~/.jupyter/custom/custom.js
de forma predeterminada, y deberá reemplazar ese fragmento de require(... events.on(...))
completo con solo lo siguiente en alcance global:
IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
Del mismo modo, si desea usar jQuery para manipular cualquier cosa, simplemente use jQuery
global directamente. Por ejemplo, me gusta ocultar el encabezado fijo de forma predeterminada, lo que me da otro espacio de 40 px para mi código, que me parece un poco más valioso que mirar el logotipo de Jupyter todo el tiempo:
jQuery(''#header-container'').hide();