在Mathematica中用括号括起文本选择

Sea*_*nch 4 wolfram-mathematica

有没有办法在Mathematica笔记本中选择一些文本,然后将选择括在括号中?

例如,如果我在笔记本中键入以下内容:

1, 2, 3, 4
Run Code Online (Sandbox Code Playgroud)

我希望能够选择所有文本,然后键入命令以插入匹配的大括号(alt-}在Linux上),它会将选择包装在大括号中.

{1, 2, 3, 4}
Run Code Online (Sandbox Code Playgroud)

Chr*_*nen 5

以下函数添加一个基本上完成您所要求的命令.

如上所述,它使用Control + U组合键(通常是"下划线").你可以很简单地改变它.它还在插入菜单中添加了一个名为"Make List"的项目,但我想你只需要使用组合键.

此修改仅在当前会话中保留,但您可以将该函数添加到init文件以在启动时加载.还有其他永久添加功能的方法,例如通过编辑KeyEventsTranslations文件,就像这里一样.)

运行实现函数后,可以使用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]}]]
Run Code Online (Sandbox Code Playgroud)

输入并选择:1,2,3,4

控制+ U

{1,2,3,4}

附录

这是您可以使用的版本,而不是您的MenuSetup修改.它设置为在"{"键按下时激活,并将包装选择或仅匹配括号.将它放入MenuSetup并不是那么简单; 我会通过调用MenuSetup中的外部程序来实现KernelExecute.将下面的代码放在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]}]]
Run Code Online (Sandbox Code Playgroud)