如何在emacs组织模式中选择表的列

Quo*_*ans 14 emacs org-mode

我无法找到从表中复制列或其中一系列的方法.

到目前为止我找到的唯一解决方案是复制整个表,然后删除我不需要的列.

我想必须有另一种更简单的方法.也许我太累了,不知道该怎么做.

Jus*_*ood 16

我认为最简单的方法是利用emacs矩形

  1. 要创建矩形,请将光标放在要创建的矩形的一个角上.

  2. 使用C-SPC,或任何你set-mark-command设置的.

  3. 将光标放在矩形的对角线上.

  4. 使用C-x r rr的矩形复制到指定的寄存器中r

  5. 使用C-x r ir可以插入一个名为寄存器正在举行的矩形r.

执行此过程后,将复制并插入所需的列.如果列不相邻,则可能需要重复此过程.

注意

我使用粗体r来表示这在技术上是寄存器的名称,而不是一些特殊的输入.


phi*_*ils 6

如果您特别想将列复制到另一个组织表(或者实际上回到原始表中),那么就支持这一点.

看到 C-hf org-table-copy-region RET

它的工作方式与常规矩形命令非常相似,因此它不是选择列的更好界面; 但关联的粘贴命令对于它对内容的作用明智的.


小智 5

我打算使用emacs rectangle命令,通过使用命令copy-rectangle-as-killbound 来避免使用寄存器,C-xrM-w选择一个区域后执行命令将复制矩形(有关标记矩形的工作原理,请参阅命令).然后,您可以通过执行粘贴复制的侦听 C-xry.

UPDATE

页面组织模式黑客描述了使用org-table公式复制列的方法.您需要为表命名.

下面是使用表公式从另一个表复制列的示例

假设您有以下表名FOO,则必须将表命名为从表公式中引用它.

#+TBLNAME: FOO
| 0 | 2 | 1 |
| 1 | 3 | 2 |
| 2 | 4 | 3 |
Run Code Online (Sandbox Code Playgroud)

您希望将列1和3从表复制到下表的第1列和第3 FOO列(将其称为B)

|  | 5 |  |
|  | 6 |  |
|  | 7 |  |
Run Code Online (Sandbox Code Playgroud)

下面的公式可以解决这个问题,你需要复制表B下面的公式并将光标移动到公式上并做 C-cC-c

#+TBLFM: $1=remote(FOO,@@#$1)::$2=remote(FOO,@@#$3)
Run Code Online (Sandbox Code Playgroud)

表B将转换为以下内容

| 0 | 5 | 1 |
| 1 | 6 | 2 |
| 2 | 7 | 3 |
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读关于组织表公式的语法,基本上$N是指第N列,@N指的是第N行.@#并且$#可以用来代替N来引用当前值所在的行和列.remote(table-name, @N$N)指的是表的第N行和第N列table-name.::concats多个公式.