2014-02-25 71 views
11

我無法找到自己的方法來從表格中複製列或其中的一系列列。如何在emacs組織模式中選擇一列表格

到目前爲止,我發現的唯一解決方案是複製整個表格,然後刪除我不需要的列。

我想應該有另一種更簡單的方法。也許我太累了,不知道該怎麼做。

回答

15

我認爲最簡單的方法是採取emacs的優勢矩形

  1. 要創建矩形,請將光標置於您要創建矩形的一個角。

  2. 使用C-SPC,或任何你有set-mark-command設置爲。

  3. 將光標放在矩形的對角線上。

  4. 使用C-x r rr的矩形複製到名爲r

  5. 使用C-x r ir可以插入一個名爲r寄存器正在舉行的矩形寄存器。

按照此過程將複製並插入所需的列。如果列不相鄰,則可能需要重複此過程。

注意

我使用的是加粗r表示,這是技術上的寄存器的名字,而不是一些特殊的輸入。

+0

像使用r作爲寄存器名稱。容易記憶。 – sakura

3

我你打算使用emacs矩形命令,使用命令copy-rectangle-as-kill避免使用寄存器約束CX[R分子量,選擇一個區域,這將複製矩形後執行命令(見this有關如何標記矩形的示例)。然後您可以通過做粘貼複製的網線C-xry

UPDATE

org-mode hacks頁描述的方式來複制使用組織表的公式列。您需要爲表格命名。

下面是一個使用表格公式從另一個表複製列的一個例子

假設你有以下命名FOO表,有必要來命名錶,從表中公式引用它。

#+TBLNAME: FOO 
| 0 | 2 | 1 | 
| 1 | 3 | 2 | 
| 2 | 4 | 3 | 

你想從表FOO列1和3複製到第1列和下面的表3(可以稱之爲B)

| | 5 | | 
| | 6 | | 
| | 7 | | 

下面的公式就可以了,你需要將公式複製而表B下面和移動光標的公式和做抄送抄送

#+TBLFM: $1=remote(FOO,@@#$1)::$2=remote(FOO,@@#$3) 

表B將被轉換爲下面

| 0 | 5 | 1 | 
| 1 | 6 | 2 | 
| 2 | 7 | 3 | 

可以讀取關於org表中的公式here的語法,基本上$N是指第N列,@N是指第N行。可以使用@#$#來代替N來引用當前值所在的行和列。 remote(table-name, @N$N)是指表table-name的第N行和第N列。 ::連接多個公式。

6

如果您特別想將列複製到另一個組織表(或實際上回到原始表中),那麼可以支持該列。

C-H˚Forg-table-copy-regionRET

它的工作原理很像常規的矩形命令,所以它不是選擇列一個更好的界面;但關聯的粘貼命令,它明智地處理了內容的作用。

1

我也無法使用標準的矩形操作。當移動到下一列時,點和標記之間的所有行都會突出顯示。當我試圖按照上面描述的公式複製列時,並且在組織模式下,如果列值非數字且具有多個單詞,則org會拋出錯誤。

但是關於切割和粘貼的一個很好的提示顯示問題是光標運動的初始方向。先向右移動到下一列,然後向下突出顯示正確的區域。標準的矩形操作可以正常工作。