2014-12-21 81 views
-1

我試圖編輯%cpaste -ed函數 - 但我無法找到用於向上或向下移動一行的鍵盤快捷鍵。IPython:編輯%cpaste輸入

p.s.我知道我可以使用%編輯,%運行 - 但這是不方便的一些原因,如果需要作出的變化很小(除其他事項外粘貼到%edit不會自動剝離>>>...

進一步%ed無法讀取塊中的粘貼文本,即%paste foo%edit foo不起作用。

回答

3

簡短的回答是'你不能'。抱歉。

稍長的答案是,「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在此處全部列出。

+0

但似乎很奇怪,%paste foo,%edit foo等內容不屬於內置工作流程的一部分。附:我知道我翻閱了所有的終端魔法,並且很驚訝線路編輯不被支持 - 並且認爲我錯過了一些很明顯的可能(例如在默認的Julia交互式控制檯中,我可以向上箭頭和向上/向下箭頭)先前輸入的塊的行)。 P.P.S.你有什麼想法,爲什麼人們投票這個*迷茫* – user3467349

+0

我不反對 - 我覺得它有點虛假,但不幸的是,對於你的答案,這是正確的答案。也許你可以修復它,並做出拉請求?我會用它...... – Withnail

+1

TBH,我想的是更簡單一些的東西 - 老實說,我發現IPython界面更有意思,而不是有用的(也許我只是習慣默認的交互式shell,在我的其他投訴中就是他們不要給%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' 

的缺點是,你不能使用from mymodule import,因爲reload只需要一個模塊作爲一個參數。