ipython에서 자동 닫기 괄호 끄기


81

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

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

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

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

답변:


32

@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
    }
  }
}

1
참고 $시작 프로세스가 변경 되었기 때문에 만 시간 현재 2/3에 대해 정의된다. 이 답변 에서 지적했듯이 , custom.js오늘날 ipython이 생성하는 에서 볼 수 있듯이 require.
Mike

3
Ipython / Jupyter 4.0에서는 더 이상 작동하지 않습니다. 아무도 같은 문제에 부딪 혔습니까?
bjonen

# header-container를 숨기면 파일의 이름 (큰 문제는 아니지만 파일> 이름 바꾸기를 사용하여 이름을 보거나 편집 할 수 있음)과 자동 저장시기를 알려주는 작은 메시지 (그다지 중요하지 않은 것 같습니다. ).
MD004

1
Jupyter 4.0에 대한 귀하의 지침은 Jupyter 5.0에서도 작동하는 것 같습니다.
nealmcb

6.0.3에서 작동하는 4.0 버전을 얻지 못했지만 여기에 업데이트 된 답변이 있습니다. stackoverflow.com/questions/44216326/…
doublefelix

24

노트북 동작은 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

터미널에서도 작동할까요? readline )은 기존에 입력 하는 것을 지원합니까 )?
asmeurer

2
명령 $ ipython profile create.py파일을 생성했다고 알려줍니다 . 해당 파일을 편집하지 마십시오. 대신 ~/.ipython/profile_default/static/custom/custom.js대답이 말하는 것처럼 파일을 편집하십시오 . 성가신 자동 닫기 괄호로 코드를 입력하는 방법은 무엇입니까?
7stud

5
이것은 IPython 3.1.0 / Jupyter에서 작동하지 않는 것 같습니다 ~/.ipython. 최신 버전에서 수행하는 방법을 아십니까? 또한 더 성가신 견적 자동 닫기 동작을 제거하는 것은 어떻습니까?
naught101

위의 chbrown의 답변 은이를 수행하는 새로운 방법을 제공합니다.
Mike

1
또한 IPython 4.0 / Jupyter에서 chbrown의 방법을 시도해 보았습니다. 여전히 내 따옴표가 자동으로 닫힙니다. 이것에 대한 업데이트가 있습니까?
horatio1701d

12

파이썬에서하고 싶다면 :

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

2
jupyter 버전에서 계속 작동해야하는 솔루션처럼 보입니다
ansonw

2
jupyter 노트북의 셀에서이 작업을 실행 한 후 페이지를 새로 고치면 ( cmd+R또는을 누름 F5) 적용됩니다.
Louis Yang

11

이것은 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;

5

위의 제안은 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 문서의 제안에서 함께 해킹 되었으며 향후 독자를 위해 최신


8
Jeez는 Jupyter의 모든 새 버전에서이 질문에 대한 답변이 왜 깨지는 지 설명합니다. 나는 이것이 영원히 비활성화되기를 바랍니다.
asmeurer jul.

이 Jupyter 5.0에서 나를 위해 일한 한 유일한 솔루션입니다
primer_cuervo

이것은 jupyter-core (4.3.0), 노트북 (5.0.0)에서는 작동하지 않았지만 Sergey의 대답은 작동했습니다!
Heath Raftery

4

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

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

이것은 Sam의 솔루션이 아무것도하지 않았을 때 5.0.0에서 저에게 효과적이었습니다. 이런.
Heath Raftery

1
이 둘 중 어느 것도 더 이상 작동하지 않지만이 솔루션은 작동합니다. stackoverflow.com/questions/44216326/…
Jim Garrison

4

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

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

스크린 샷 영상

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


3

다른 답변에서 언급되지 않았습니다. 제 경우 (OS X, Jupyter 4.2.0)에서 custom.js는 ~ / anaconda / lib / python3.5 / site-packages / notebook / static / custom / custom.js에 있습니다.

저 같은 사람에게 도움이 될 것 같아요.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.