Emacs - 如何将文本块格式化为电子表格形式?

发布于 2024-10-03 08:54:53 字数 815 浏览 1 评论 0原文

emacs 中是否有命令/模式可以将文本块格式化为这样:

; before
; p1 p2 p3 p4 p5 p6 p7 p8 p9 p10
i 107 0 1 10000 440 1
i 107 1.5 1 20000 220 2
i 107 3 2 10000 110 2
i 107 3.5 2.5 10000 138.6 2
i 107 4 2 5000 329.6 2
i 107 4.5 1.5 6000 440 2
i 108 7 1 10000 440 1 2 3 1
i 108 8.5 1 10000 220 1 0.5 8 1
i 108 10 3 10000 110 1 1 13 1
i 108 10.5 2.5 10000 130.8 1 2.001 8 1

into this ?

; after
; p1  p2   p3  p4    p5    p6 p7    p8 p9 p10
i 107 0    1   10000 440   1
i 107 1.5  1   20000 220   2
i 107 3    2   10000 110   2
i 107 3.5  2.5 10000 138.6 2
i 107 4    2   5000  329.6 2
i 107 4.5  1.5 6000  440   2
i 108 7    1   10000 440   1  2     3  1
i 108 8.5  1   10000 220   1  0.5   8  1
i 108 10   3   10000 110   1  1     13 1
i 108 10.5 2.5 10000 130.8 1  2.001 8  1

Is there a command/mode in emacs to format a block of text like this:

; before
; p1 p2 p3 p4 p5 p6 p7 p8 p9 p10
i 107 0 1 10000 440 1
i 107 1.5 1 20000 220 2
i 107 3 2 10000 110 2
i 107 3.5 2.5 10000 138.6 2
i 107 4 2 5000 329.6 2
i 107 4.5 1.5 6000 440 2
i 108 7 1 10000 440 1 2 3 1
i 108 8.5 1 10000 220 1 0.5 8 1
i 108 10 3 10000 110 1 1 13 1
i 108 10.5 2.5 10000 130.8 1 2.001 8 1

into this?

; after
; p1  p2   p3  p4    p5    p6 p7    p8 p9 p10
i 107 0    1   10000 440   1
i 107 1.5  1   20000 220   2
i 107 3    2   10000 110   2
i 107 3.5  2.5 10000 138.6 2
i 107 4    2   5000  329.6 2
i 107 4.5  1.5 6000  440   2
i 108 7    1   10000 440   1  2     3  1
i 108 8.5  1   10000 220   1  0.5   8  1
i 108 10   3   10000 110   1  1     13 1
i 108 10.5 2.5 10000 130.8 1  2.001 8  1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

病毒体 2024-10-10 08:54:53

尝试Mx table-capture

try M-x table-capture

相思碎 2024-10-10 08:54:53

我不确定它是否相同,但 org-mode 有很好的表支持

激活 org-mode 并尝试其中之一

  • 记录键盘宏以添加“|”字段之间
    (如果您的表格不稀疏,即没有空单元格)

  • 使用 regexp-replace 将空格转换为“|”

然后像在 Excel 中一样使用它

ps:如果您需要更多,请询问

i'm not sure it's the same but the org-mode has great table support

activate org-mode and try either one of those

  • record a keyboard macro to add '|' between fields
    (if your tables arent sparse aka no empty cell)

  • use regexp-replace to convert space into '|'

then play with it like in excel

ps: if you need more, just ask

青衫负雪 2024-10-10 08:54:53

您可以使用 emacs org-mode 表支持从该区域创建表,然后在完成后删除列分隔符。

突出显示有问题的区域,然后执行

M-x org-table-create-or-convert-from-region

您的结果将如下所示:

; before
| ; |  p1 |   p2 |  p3 |    p4 |    p5 | p6 |    p7 | p8 | p9 | p10 |
| i | 107 |    0 |   1 | 10000 |   440 |  1 |       |    |    |     |
| i | 107 |  1.5 |   1 | 20000 |   220 |  2 |       |    |    |     |
| i | 107 |    3 |   2 | 10000 |   110 |  2 |       |    |    |     |
| i | 107 |  3.5 | 2.5 | 10000 | 138.6 |  2 |       |    |    |     |
| i | 107 |    4 |   2 |  5000 | 329.6 |  2 |       |    |    |     |
| i | 107 |  4.5 | 1.5 |  6000 |   440 |  2 |       |    |    |     |
| i | 108 |    7 |   1 | 10000 |   440 |  1 |     2 |  3 |  1 |     |
| i | 108 |  8.5 |   1 | 10000 |   220 |  1 |   0.5 |  8 |  1 |     |
| i | 108 |   10 |   3 | 10000 |   110 |  1 |     1 | 13 |  1 |     |
| i | 108 | 10.5 | 2.5 | 10000 | 130.8 |  1 | 2.001 |  8 |  1 |     |

此时,您可以搜索并替换 |分隔列的字符以获得

; before
;  p1   p2  p3    p4    p5 p6    p7 p8 p9 p10
i 107    0   1 10000   440  1                
i 107  1.5   1 20000   220  2                
i 107    3   2 10000   110  2                
i 107  3.5 2.5 10000 138.6  2                
i 107    4   2  5000 329.6  2                
i 107  4.5 1.5  6000   440  2                
i 108    7   1 10000   440  1     2  3  1    
i 108  8.5   1 10000   220  1   0.5  8  1    
i 108   10   3 10000   110  1     1 13  1    
i 108 10.5 2.5 10000 130.8  1 2.001  8  1 

You can use emacs org-mode table support to create a table from the region, then delete the column separators once it's completed.

Highlight the region in question, then execute

M-x org-table-create-or-convert-from-region

Your results will look like this:

; before
| ; |  p1 |   p2 |  p3 |    p4 |    p5 | p6 |    p7 | p8 | p9 | p10 |
| i | 107 |    0 |   1 | 10000 |   440 |  1 |       |    |    |     |
| i | 107 |  1.5 |   1 | 20000 |   220 |  2 |       |    |    |     |
| i | 107 |    3 |   2 | 10000 |   110 |  2 |       |    |    |     |
| i | 107 |  3.5 | 2.5 | 10000 | 138.6 |  2 |       |    |    |     |
| i | 107 |    4 |   2 |  5000 | 329.6 |  2 |       |    |    |     |
| i | 107 |  4.5 | 1.5 |  6000 |   440 |  2 |       |    |    |     |
| i | 108 |    7 |   1 | 10000 |   440 |  1 |     2 |  3 |  1 |     |
| i | 108 |  8.5 |   1 | 10000 |   220 |  1 |   0.5 |  8 |  1 |     |
| i | 108 |   10 |   3 | 10000 |   110 |  1 |     1 | 13 |  1 |     |
| i | 108 | 10.5 | 2.5 | 10000 | 130.8 |  1 | 2.001 |  8 |  1 |     |

At this point, you can search and replace for the | character separating the columns to get

; before
;  p1   p2  p3    p4    p5 p6    p7 p8 p9 p10
i 107    0   1 10000   440  1                
i 107  1.5   1 20000   220  2                
i 107    3   2 10000   110  2                
i 107  3.5 2.5 10000 138.6  2                
i 107    4   2  5000 329.6  2                
i 107  4.5 1.5  6000   440  2                
i 108    7   1 10000   440  1     2  3  1    
i 108  8.5   1 10000   220  1   0.5  8  1    
i 108   10   3 10000   110  1     1 13  1    
i 108 10.5 2.5 10000 130.8  1 2.001  8  1 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文