Emacs-如何将文本块格式化为电子表格格式?
emacs中是否有如下命令/模式来格式化文本块:Emacs-如何将文本块格式化为电子表格格式?,emacs,string-formatting,Emacs,String Formatting,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
; 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 | |
这件事
; 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
尝试
M-x表捕获
我不确定它是否相同,但组织模式有很好的表支持
激活组织模式并尝试其中一种
- 录制键盘宏以在字段之间添加“|” (如果您的表不是空的,则没有空单元格)
- 使用regexp replace将空间转换为“|”
ps:如果您需要更多,只需询问您可以使用emacs组织模式表支持从区域创建表,然后在完成后删除列分隔符 突出显示有问题的区域,然后执行
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 | |
此时,您可以搜索并替换分隔列的|字符以获取
; 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
我觉得表格捕捉有点让人困惑。我试了几次,但都没能正常工作。有没有一种方法可以运行无边框表格的命令?您是怎么做的?怎么搞的?你以为会发生什么?很好<代码>M-x表格发布(表格单元格内有点)将删除边框。这会在行与行之间留下一条空行,这很容易清理。我要做的是:我的列分隔符:s+(一个或多个空格),我的行分隔符^(行尾),左对齐,最小单元格宽度1。我得到一条垂直的p线。这就是全部。我想得到的已经在问题中了;所有单元格排列在一张桌子内,没有边框。非常感谢:您的regexp是错误的。首先,Emacs regexp不是PCRE,
\s+
并不意味着空白。请参阅M-:(info“(elisp)Regexp反斜杠”)
。您需要\s-
(或者在本例中只需要一个空格)。其次,^
在我所见过的任何regexp语法中都不是行尾;这总是一条线的起点。您需要$
,或者换行符(C-qc-j
)。