我試圖編輯%cpaste
-ed函數 - 但我無法找到用於向上或向下移動一行的鍵盤快捷鍵。IPython:編輯%cpaste輸入
p.s.我知道我可以使用%編輯,%運行 - 但這是不方便的一些原因,如果需要作出的變化很小(除其他事項外粘貼到%edit
不會自動剝離>>>
和...
)
進一步%ed
無法讀取塊中的粘貼文本,即%paste foo
%edit foo
不起作用。
我試圖編輯%cpaste
-ed函數 - 但我無法找到用於向上或向下移動一行的鍵盤快捷鍵。IPython:編輯%cpaste輸入
p.s.我知道我可以使用%編輯,%運行 - 但這是不方便的一些原因,如果需要作出的變化很小(除其他事項外粘貼到%edit
不會自動剝離>>>
和...
)
進一步%ed
無法讀取塊中的粘貼文本,即%paste foo
%edit foo
不起作用。
簡短的回答是'你不能'。抱歉。
稍長的答案是,「Cpaste將讀取並執行文本預格式化塊有沒有範圍編輯一旦你在裏面 - 它不是一次Vim或者納米你在工作
。 。從IPython的文檔:
粘貼&從剪貼板執行預格式化的代碼塊
必須終止與塊 ' - '(兩個減號標誌)或Ctrl-d 獨自上線。您也可以提供自己的哨兵'%paste -s %%'('%%'是此操作的新標記)。
該塊在執行前被縮進以啓用方法 定義的執行。直接從電子郵件,差異文件和 文檔測試('...'延續提示也被剝離)直接粘貼到行的開頭的''''和'+'字符爲 。 已執行的程序塊也被分配給名爲'pasted_block'的變量,用於 ,稍後使用'%edit pasted_block'進行編輯。
您也可以傳遞一個變量名作爲參數,例如'%cpaste foo'。 此分配塊粘貼到變量「富」作爲字符串,不 dedenting或執行它(前述>>>和+仍然剝離)
「%cpaste -r」重新執行以前由cpaste輸入的塊。 '%cpaste -q'禁止任何附加輸出消息。
實際上,我的工作流程大致如the answer to this question中所述。我編輯了textwrangler或PyCharm中的代碼,並使用%cpaste在終端中運行以便進行早期調試。這是一個額外的步驟,但現在看來是不可避免的。您可能可以將%capste包裝在edit-syntax_error()終端魔術中,但我沒有嘗試過。
terminal magics在此處全部列出。
雖然編輯%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'
的缺點是,你不能使用from mymodule import
,因爲reload
只需要一個模塊作爲一個參數。
但似乎很奇怪,%paste foo,%edit foo等內容不屬於內置工作流程的一部分。附:我知道我翻閱了所有的終端魔法,並且很驚訝線路編輯不被支持 - 並且認爲我錯過了一些很明顯的可能(例如在默認的Julia交互式控制檯中,我可以向上箭頭和向上/向下箭頭)先前輸入的塊的行)。 P.P.S.你有什麼想法,爲什麼人們投票這個*迷茫* – user3467349
我不反對 - 我覺得它有點虛假,但不幸的是,對於你的答案,這是正確的答案。也許你可以修復它,並做出拉請求?我會用它...... – Withnail
TBH,我想的是更簡單一些的東西 - 老實說,我發現IPython界面更有意思,而不是有用的(也許我只是習慣默認的交互式shell,在我的其他投訴中就是他們不要給%config訪問顏色,它需要手動編輯.py文件) - 我真正想要的唯一功能是配置我的標籤長度和行編輯。 – user3467349