這是一個簡單的實現(我也很感激代碼審查,我不是在前端編程好):
(* This converts a sequence of expressions into boxes *)
Clear[makeManyBoxes]
SetAttributes[makeManyBoxes, HoldAllComplete];
makeManyBoxes[e__] := [email protected][MakeBoxes /@ HoldComplete[e]]
(* Split a list at separator *)
split[list_, sep_] :=
DeleteCases[Split[list, #1 =!= sep && #2 =!= sep &], {sep}]
wr[e_] := NotebookWrite[InputNotebook[], Cell[BoxData[e], "Input"]]
[email protected]["Paste!",
Module[{clipboard},
clipboard = NotebookGet[ClipboardNotebook[]][[1, 1, 1]];
If[StringQ[clipboard],
wr /@
split[ToExpression[clipboard, InputForm, makeManyBoxes], "Null"]
]
]
]
它在空行破壞細胞。爲此,我們需要首先解析表達式(如果空行出現在長Module
的中間怎麼辦?)。但單獨解析會導致幾個問題。
問題與此實現:
- 它刪除評論
- 它不能處理不正確輸入
- 它不保留格式(新行)
- 我敢肯定有必須是其他幾件可能出錯的東西
+1,我不知道這個快捷方式 – Szabolcs
@Szabolcs在這種情況下難怪你問這個問題。這會很煩人! –
+1,我也不知道那條捷徑。我剛剛生活在一起,並認爲沒有什麼可以做的。 – rcollyer