[ipython] ipython에서 자동 닫기 괄호 끄기

나는 ipython의 dev 브랜치에 대한 최신 정보를 유지합니다 (ipython은 지금까지 가장 멋진 제품이기 때문입니다). 상당히 최근에 (어제의 멋진 ipython 2.0 릴리스 이전) 입력 할 때 괄호, 괄호, 따옴표 등이 자동으로 닫히기 시작했습니다. 그것은 터미널 (내가 터미널에서 사용하는 다른 어떤 것도하지 않음)과 노트북 세션 모두에서 발생하므로 개발자의 의도적 인 선택이라고 가정합니다. 나는 다른 사람들이이 기능을 좋아할지도 모른다는 것을 존경 할 수 있지만 그것은 나를 완전히 미치게 만든다.

구성 파일에서 옵션을 찾을 수 없습니다. 나는 그것이 무엇이라고 부르는지 모르기 때문에 그것을 위해 구글조차 할 수 없다. 유일한 것은 자동 괄호 의 다른 기능입니다 . 나는 실제로이 질문을 찾았 지만 그것은 오래되었고 내가보고있는 행동이 일어날 수 없다는 것을 암시합니다.

이 기능을 어떻게 끌 수 있습니까?

[어쨌든 주로 노트북 인터페이스를 사용하기 때문에 끄는 것만으로도 괜찮지 만 터미널의 노트북과 ipython 세션 모두에서 끄는 것이 좋습니다.]



답변

@minrk의 대답은 수정의 핵심과 뼈다귀이지만 적어도 IPython-3.1.0. 귀하의 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;
  });
});

IPython의 RequireJS종속성 로딩 에 대한 의견 과 IPython / Jupyter Installed Extensions 의 더 나은 공식에 대한 포인터에 대해 @Mike 에게 감사드립니다 .

편집 Jupyter 4.0.x:

현재 IPython 노트북 구현 인 Jupyter 4.0.0은 JS 사용자 지정을 개선했습니다. 이제 ~/.jupyter/custom/custom.js기본적으로 사용 되며 전체 require(... events.on(...))스 니펫을 전역 범위에서 다음으로 만 바꿔야합니다 .

IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;

마찬가지로 jQuery를 사용하여 모든 것을 조작하려면 jQuery전역을 직접 사용하십시오 . 예를 들어, 기본적으로 고정 헤더를 숨기는 것을 좋아합니다. 이렇게하면 코드를위한 40px의 공간이 추가로 제공됩니다. 이는 항상 Jupyter 로고를 보는 것보다 조금 더 가치가 있다고 생각합니다.

jQuery('#header-container').hide();

편집Jupyter ≥ 4.0.6 (그러나 <Jupyter Lab) :

custom.js위 의 해결 방법이 작동하지 않으면 다음을 추가해보십시오 ~/.jupyter/nbconfig/notebook.json.

{
  "CodeCell": {
    "cm_config": {
      "autoCloseBrackets": false
    }
  }
}


답변

노트북 동작은 CodeMirror autoCloseBrackets 플러그인 의 결과입니다 . 편집 ( ipython profile create아직 만들지 않은 경우 생성 ) ~/.ipython/profile_default/static/custom/custom.js하고 다음을 추가 하여이 기능을 끌 수 있습니다 .

if (IPython.CodeCell) {
  IPython.CodeCell.options_default.cm_config.autoCloseBrackets = false;
}

터미널의 경우 설명하는 괄호 동작이 표시되지 않습니다. PYTHONSTARTUP이 정의되어 있습니까? IPython은 기본적으로이 파일을 실행하며 다음을 추가하여 비활성화 할 수 있습니다 ~/.ipython/profile_default/ipython_config.py.

c.InteractiveShellApp.exec_PYTHONSTARTUP = False


답변

파이썬에서하고 싶다면 :

from notebook.services.config import ConfigManager
c = ConfigManager()
c.update('notebook', {"CodeCell": {"cm_config": {"autoCloseBrackets": False}}})


답변

이것은 Jupyter 4.0.6에서 나를 위해 작동하는 것입니다.

require(['notebook/js/codecell'], function (codecell) {
  codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})

에서 ~/.jupyter/custom/custom.js.

BTW, 일치하는 괄호의 구문 강조 표시를 추가로 끄려면 :

codecell.CodeCell.options_default.cm_config.matchBrackets = false;


답변

위의 제안은 Jupyter Notebook 5.0.0이 설치된 Jupyter 4.3.0에서 저에게 효과적이지 않았습니다.

~/.jupyter/custom/custom.js다음 내용으로 라는 파일을 만들어야한다는 것을 알았습니다 .

var cell = Jupyter.notebook.get_selected_cell();
var patch = {
  CodeCell: {
    cm_config: {
      autoCloseBrackets: false,
    }
  }
}
cell.config.update(patch);

~/.juypter/custom이 작업을 수행하기 전에는 디렉토리 가 존재하지 않았습니다.

이것은 v5.0 문서의 제안에서 함께 해킹 되었으며 향후 독자를 위해 최신


답변

Jupyter Notebook 5.1의 경우 4.2와 동일한 것을 사용합니다. 즉, ~ / .jupyter / custom / custom.js에 다음 코드 조각을 넣습니다.

require(['notebook/js/codecell'], function (codecell) {
  codecell.CodeCell.options_default.cm_config.autoCloseBrackets = false;
})


답변

Jupyter Lab Notebook autoClosingBrackets의 설정 메뉴에서 플러그인을 끌 수 있습니다 . 섹션으로 이동 Settings --> Advanced Settings Editor하여 다음을 추가 User Overrides하십시오.

{
  "codeCellConfig": {
    "autoClosingBrackets": false
  }
}

스크린 샷
영상

이것은 JupyterLab 0.32.1 및 jupyter_core 4.4.0에서 작동했습니다.