有没有办法在Mathematica笔记本中选择一些文本,然后将选择括在括号中?
例如,如果我在笔记本中键入以下内容:
1, 2, 3, 4
我希望能够选择所有文本,然后键入命令以在linux上插入匹配的大括号(alt-}
),并将选择括在大括号中。
{1, 2, 3, 4}
答案 0 :(得分:5)
以下函数添加一个基本上可以执行您所要求的命令。
如上所述,它使用Control + U组合键(通常是“下划线”)。你可以很简单地改变它。它还在插入菜单中添加了一个名为“Make List”的项目,但我想你只需要使用组合键。
此修改仅在当前会话中保留,但您可以将该函数添加到init文件以在启动时加载。还有其他永久添加功能的方法,例如编辑KeyEventsTranslations文件,例如here。)
运行实现函数后,可以使用Control + U执行。
FrontEndExecute[
FrontEnd`AddMenuCommands["DuplicatePreviousOutput",
{Delimiter, MenuItem["Make List",
FrontEnd`KernelExecute[
nb = SelectedNotebook[];
sel = NotebookRead[nb];
NotebookWrite[nb, Cell[BoxData[RowBox[{"{", sel, "}"}]]]]],
MenuKey["u", Modifiers -> {"Control"}],
System`MenuEvaluator -> Automatic]}]]
输入并选择:1,2,3,4
控制+ U
{1,2,3,4}
<强>附录强>
这是您可以使用的版本,而不是您的MenuSetup修改。它设置为在“{”键按下时激活,并将包装选择或仅匹配括号。将它放入MenuSetup并不是那么简单;我会通过使用KernelExecute
从MenuSetup调用外部程序来实现。将下面的代码放在init文件中同样有效。
FrontEndExecute[
FrontEnd`AddMenuCommands[
"DuplicatePreviousOutput", {Delimiter, MenuItem["Make List",
FrontEnd`KernelExecute[
nb = SelectedNotebook[];
sel = NotebookRead[nb];
If[sel === {},
FrontEndExecute[FrontEndToken["InsertMatchingBraces"]],
NotebookWrite[nb, Cell[BoxData[RowBox[{"{", sel, "}"}]]]]]],
MenuKey["{", Modifiers -> {}],
System`MenuEvaluator -> Automatic]}]]