2014-12-21 4 views
-1

%cpaste -ed 함수를 편집하려고하는데 줄을 위나 아래로 이동하기위한 키보드 단축키를 찾을 수 없습니다.IPython : % cpaste 입력 편집

p.s. 나는 % 편집, % 실행을 사용할 수 있습니다 알고있다 - 그러나 그것은 할 필요가있는 변화가 작은 경우 여러 가지 이유로 불편 또한

(다른 것들 사이에 자동으로 >>>...을 제거하지 않습니다 %edit에 붙여 넣기) %ed은 블록에서 붙여 넣은 텍스트를 읽을 수 없습니다. 즉 %paste foo%edit foo이 작동하지 않습니다.

답변

3

짧은 대답은 '할 수 없습니다'입니다. 죄송합니다.

경미하게 더 이상 대답은 Cpaste가 읽을 텍스트의 사전 형식의 블록을 실행할 것 "이다 당신이 거기에있어 일단 편집 할 여지가 없다 -. 그것은 정력 아니에요 또는 나노 당신이에서 작업하는

. . iPython 문서에서

: - (이 마이너스 징후) 또는 Ctrl-D''& 클립 보드에서 미리 포맷 코드 블록을 실행

붙여 넣기

당신과 함께 블록을 종료해야혼자 줄에. 또한 '% paste -s %%'('%%'는이 조작에 대한 새로운 감시 장치 임)와 함께 자신의 전초품을 제공 할 수 있습니다.

블록은 실행 전에 정의되어 정의의 실행을 가능하게합니다. 줄 시작 부분의 '>'및 '+'문자는 무시되며 전자 메일, diff 파일 및 doctest에서 직접 붙여 넣을 수 있습니다 ('...'계속 프롬프트도 제거됩니다). 실행 된 블록 도 나중에 '% edit pasted_block'을 사용하여 편집하는 의 'pasted_block'변수에 할당됩니다.

변수 이름을 인수로 전달할 수도 있습니다 (예 : '% cpaste foo'. 이 dedenting없이 문자열 변수 '갑'에 붙인 블록을 할당하거나 실행

'% cpaste -r'재실행 블록 이전 cpaste 의해 입력 (+ 항 >>>하고 여전히 벗겨) . '% cpaste -q'는 추가 출력 메시지를 모두 표시하지 않습니다.

현실적으로 내 워크 플로는 주로 the answer to this question과 같습니다. textwrangler 나 PyCharm에서 코드를 편집하고 % cpaste를 사용하여 초기 디버깅을 위해 터미널에서 실행합니다. 그것은 추가 단계이지만, 지금은 피할 수없는 것처럼 보입니다. 잠재적으로 % capste를 edit-syntax_error() 터미널 마술로 감쌀 수도 있지만, 시도하지는 않았습니다.

terminal magics은 전체 목록에 있습니다.

+0

그러나 % paste foo, % edit foo와 같은 것이 작업 흐름에 포함되어 있지 않은 것처럼 보입니다. 추신 모든 터미널 매직을 살펴본 결과 선 편집이 지원되지 않는다는 사실에 놀라움을 금치 못했습니다. (예를 들어 기본 줄리아 대화 형 콘솔에서 위쪽 화살표와 위쪽/아래쪽 화살표를 모두 누를 수 있습니다. 이전에 입력 된 블록의 라인). P.P.S. 왜 사람들이이 투표를 혼란스럽게 여기는 지 알지 못합니까? – user3467349

+0

동의하지 않습니다. - 조금은 어리 석었지만, 불행히도 답변에 대해서는 정확한 답변입니다. 어쩌면 당신은 그것을 고칠 수 있고 그것에 대한 풀 요청을 할 수 있습니까? 나는 그것을 사용할 것이다 ... – Withnail

+1

TBH, 나는 더 단순한 것을 포크로 잡으려고 생각하고 있었다. 솔직히 말해서, 나는 IPython 인터페이스가 도움이되는 것보다 더 산만하다는 것을 안다. (어쩌면 나는 디폴트 대화 형 쉘에 익숙 할 것이다. 색상에 대한 % config 액세스를 제공하지 말고 수동으로 .py 파일을 편집해야합니다.) - 필자가 원하는 유일한 기능은 탭 길이와 줄 편집을 구성하는 것입니다. – user3467349

1

%cpaste을 편집하는 동안 수는 모듈을 편집하고 reload입니다.

In [1]: import mymodule 

In [2]: mymodule.function() 
Out[2]: 'result' 

< 편집기에서 모듈을 편집하는 중 ...>

In [3]: reload(mymodule) 
Out[3]: <module 'mymodule' from 'mymodule.py'> 

In [4]: mymodule.function() 
Out[4]: 'new result' 

단점은 reload 만 인수로 모듈이 걸리기 때문에 당신이 from mymodule import 사용할 수 없다는 것입니다.