如何在emacs组织模式表中格式化一列数字?

时间:2013-09-23 18:47:58

标签: bash sorting emacs org-mode

我在emacs org-mode中有一个表格。请问,有没有办法格式化第3列和第4列中的数字以垂直排列小数点?

注意,旁白:我使用bash sort命令对生成的文件进行排序,发现每行开头的额外|计为第1列,因此,例如列在此背景下,OUTPUT标题为第4位。

| CALL  | CHAN   |   OUTPUT |    INPUT | QTHR   | LOCATION       | NGR        | REGION   | CTCSS | KEEPER | Internet |
| GB3AH | RB11   |  433.275 |  434.875 | JO02KP | East Dereham   | TF94300990 | EAST ENG |  94.8 | G8PON  |          |
| GB3AS | RV48   |    145.6 |      145 | IO84LS | Wigton,Cumbria | NY33724123 | N.ENG    |    77 | G4KFN  |          |
| GB3AG | RV58   |  145.725 |  145.125 | IO86ON | Forfar         | NO48904170 | SCOT     |  94.8 | GM1CMF | Echolink |
| GB3AY | RV52   |   145.65 |   145.05 | IO75OR | Dalry          | NS26605190 | SCOT     | 103.5 | GM3YKE |          |
| GB3BA | RB01   |  433.025 |  434.625 | IO87SC | Banchory       | NJ72150255 | SCOT     |    67 | GM1XEA |          |
| GB3BD | RB06   |   433.15 |   434.75 | IO92RA | Ampthill       | TL01303860 | SE ENG   |    77 | G8MGP  |          |
| GB3AA | 23cm   |     1297 |     1291 | IO81RO | Alveston,Avon  | ST62608820 | SW ENG   | 118.8 | G4CJZ  |          |
| GB3AI | RV55   | 145.6875 | 145.0875 | IO91QQ | Amersham       | SU97089767 | SW ENG   |    77 | G0RDI  | Echolink |
| GB3AL | RV59   | 145.7375 | 145.1375 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |
| GB3AM | R50-13 |    50.84 |    51.34 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |

1 个答案:

答案 0 :(得分:17)

以下是步骤:

  1. 这是一个可选的,使事情更具视觉效果。 C-c} 打开行号和列号的叠加层。 相同的组合将关闭。请注意,这些不是更改 在缓冲区中,它们只是工具提示。 你可能想在第一行做 C-c - ,看看 列号。
  2. 将光标移动到OUTPUT列并插入一个新列,其中 C-S-right
  3. 您的光标现在应该在新列中。 输入$4=$3;%0.3f,即将第三列复制到第四列, 并将其格式化为具有3个精度的浮点。 按返回,只需填写一个单元格。 按 C-u C-c * 重新计算所有单元格。 这也可以用 C-c C-c 和光标完成 在#+TBLFM:行。
  4. 如果需要,可以使用 C-M-left 删除旧列, 并删除下面的表格公式。
  5. UPDATE:

    感谢来自@phils的输入,以下是另一种方式:

    1. 将光标移动到第3列中的任意数字,例如433.275
    2. C-c = ,光标移至迷你缓冲区。
    3. 输入$0;%0.3f并按返回。 此处$0指的是当前列,$3如果是第3列也会有效。
    4. 在文档的任何位置按 C-u C-c * , 或者将光标移动到#+TBLFM:行,然后按 C-c C-c
    5. 对第4列重复相同的过程。