我找不到从表中复制一列或一系列列的方法。
目前我所找到的唯一解决方案是复制整个表格,然后再删除不需要的列。
我想必定有更简单的方法。也许我只是太累了,无法意识到如何做到这一点。
我认为最简单的方法是利用emacs矩形
将光标放在您想创建矩形的角落之一。
使用 C-SPC
,或者您所设置的任何 set-mark-command
。
将光标放在矩形的对角线角落。
使用 C-x r r
r
将该矩形复制到名为 r
的寄存器中。
使用 C-x r i
r
插入在寄存器 r
中保存的矩形。
按照这个过程将会复制和插入您想要的列。如果列不相邻,则可能需要重复此过程。
注意
我使用粗体的 r
来表示这实际上是一个寄存器的名称,而不是一些特殊的输入。
如果你想将某一列(或多列)复制到另一个org表格中(或者是回到原始表格),这个功能是支持的。
请参见C-hf org-table-copy-region
RET
它的使用方式类似于常规的矩形命令,因此并不是更好的选择列的界面;但相关联的粘贴命令是聪明的,能够很好地处理内容。
copy-rectangle-as-kill
避免使用寄存器,绑定为C-xrM-w。在选择区域后执行该命令,这将复制矩形(有关标记矩形的工作原理,请参见此处)。然后,您可以通过执行C-xry来粘贴已复制的矩形。
更新
页面org-mode hacks描述了使用org-table公式复制列的方法。您需要为表格命名。FOO
的表格,必须为其命名以便从表格公式中引用它。#+TBLNAME: FOO
| 0 | 2 | 1 |
| 1 | 3 | 2 |
| 2 | 4 | 3 |
FOO
的第一列和第三列复制到下表格(我们称其为 B)的第一列和第三列。| | 5 | |
| | 6 | |
| | 7 | |
#+TBLFM: $1=remote(FOO,@@#$1)::$2=remote(FOO,@@#$3)
B表将转换为以下内容| 0 | 5 | 1 |
| 1 | 6 | 2 |
| 2 | 7 | 3 |
$N
指的是第N列,@N
则指第N行。您也可以使用@#
和$#
来代替N,并引用当前值所在的行和列。而remote(table-name, @N$N)
则指的是表格table-name
的第N行和第N列。::
可用于连接多个公式。在org模式下,“本地”方法已经由user2053036回答中涉及了,我只是想简单介绍一下“在表格内复制列”的方法:假设你有这样一个表格:
| hello | world |
| is | good |
现在,你想要将第二列重复到第三列。
步骤如下:
Alt-Shift-<right>
打开一个新的列
| hello | world | |
| is | good | |
=$1 C-c C-c
;或者直接在表格下方输入TBLFM并跳转到步骤4)
| hello | world | hello |
| is | good | |
#+TBLFM: $3=$1
C-c C-c
| 你好 | 世界 | 你好 |
| 是 | 好 | 是 |
#+TBLFM: $3=$1
这将把第一列复制到第三列。