@@ -50,24 +50,24 @@ <h1 class="title">读:SES——Emacs内置的简易电子表格</h1>
5050< h2 > 目录</ h2 >
5151< div id ="text-table-of-contents " role ="doc-toc ">
5252< ul >
53- < li > < a href ="#org3e44bc6 "> 场景一:记账</ a >
53+ < li > < a href ="#orgee4e8cc "> 场景一:记账</ a >
5454< ul >
55- < li > < a href ="#orgda1d678 "> 填表头</ a > </ li >
56- < li > < a href ="#org75d1d2a "> 填数据</ a > </ li >
57- < li > < a href ="#org03b7828 "> 用公式算余额</ a > </ li >
58- < li > < a href ="#org364be22 "> 插入新行,公式自动调整</ a > </ li >
55+ < li > < a href ="#org74ef4bc "> 填表头</ a > </ li >
56+ < li > < a href ="#org32d9e3e "> 填数据</ a > </ li >
57+ < li > < a href ="#org480466f "> 用公式算余额</ a > </ li >
58+ < li > < a href ="#orgaf3ab9b "> 插入新行,公式自动调整</ a > </ li >
5959</ ul >
6060</ li >
61- < li > < a href ="#org911cb12 "> 场景二:服务器集群资源巡检</ a >
61+ < li > < a href ="#org35bb957 "> 场景二:服务器集群资源巡检</ a >
6262< ul >
63- < li > < a href ="#orgaff9b92 "> 条件筛选:ses-select</ a > </ li >
64- < li > < a href ="#org5c99c80 "> 处理空值:! 标志</ a > </ li >
65- < li > < a href ="#org0558f83 "> 统计数量</ a > </ li >
63+ < li > < a href ="#orgeda6606 "> 条件筛选:ses-select</ a > </ li >
64+ < li > < a href ="#org7a07a37 "> 处理空值:! 标志</ a > </ li >
65+ < li > < a href ="#org9bf8f86 "> 统计数量</ a > </ li >
6666</ ul >
6767</ li >
68- < li > < a href ="#orgae55aaf "> SES vs Org Table</ a > </ li >
69- < li > < a href ="#orgbd226ad "> 导出与实用技巧</ a > </ li >
70- < li > < a href ="#orgddcd904 "> 速查:SES 常用按键</ a > </ li >
68+ < li > < a href ="#org9dcaefd "> SES vs Org Table</ a > </ li >
69+ < li > < a href ="#orgb94e4fa "> 导出与实用技巧</ a > </ li >
70+ < li > < a href ="#orgd270a38 "> 速查:SES 常用按键</ a > </ li >
7171</ ul >
7272</ div >
7373</ div >
@@ -79,9 +79,9 @@ <h2>目录</h2>
7979SES 是 Emacs 自带的 major mode,文件名以 < code > .ses</ code > 结尾就会自动进入。它的定位如其名:简单,不支持图表,但足够覆盖你日常需要的电子表格操作。
8080</ p >
8181
82- < div id ="outline-container-org3e44bc6 " class ="outline-2 ">
83- < h2 id ="org3e44bc6 "> 场景一:记账</ h2 >
84- < div class ="outline-text-2 " id ="text-org3e44bc6 ">
82+ < div id ="outline-container-orgee4e8cc " class ="outline-2 ">
83+ < h2 id ="orgee4e8cc "> 场景一:记账</ h2 >
84+ < div class ="outline-text-2 " id ="text-orgee4e8cc ">
8585< p >
8686先从最经典的电子表格"hello world"开始:记账。新建一个 < code > finances.ses</ code > 文件。
8787</ p >
@@ -91,22 +91,22 @@ <h2 id="org3e44bc6">场景一:记账</h2>
9191</ p >
9292</ div >
9393
94- < div id ="outline-container-orgda1d678 " class ="outline-3 ">
95- < h3 id ="orgda1d678 "> 填表头</ h3 >
96- < div class ="outline-text-3 " id ="text-orgda1d678 ">
94+ < div id ="outline-container-org74ef4bc " class ="outline-3 ">
95+ < h3 id ="org74ef4bc "> 填表头</ h3 >
96+ < div class ="outline-text-3 " id ="text-org74ef4bc ">
9797< p >
9898把光标移到 A1 单元格内部,按 < code > "</ code > (双引号),minibuffer 会出现提示让你输入文本。输入 < code > Income</ code > 回车。现在需要第二列,按 < code > TAB</ code > 在右边创建一个新单元格 B1,在里面同样按 < code > "</ code > 输入 < code > Expenses</ code > 。
9999</ p >
100100
101- < pre class ="example " id ="orgc704fc4 ">
101+ < pre class ="example " id ="org4599a20 ">
102102Income Expenses
103103</ pre >
104104</ div >
105105</ div >
106106
107- < div id ="outline-container-org75d1d2a " class ="outline-3 ">
108- < h3 id ="org75d1d2a "> 填数据</ h3 >
109- < div class ="outline-text-3 " id ="text-org75d1d2a ">
107+ < div id ="outline-container-org32d9e3e " class ="outline-3 ">
108+ < h3 id ="org32d9e3e "> 填数据</ h3 >
109+ < div class ="outline-text-3 " id ="text-org32d9e3e ">
110110< p >
111111SES 新建后只有 A1 这一个单元格,要填数据得先创建新行。把光标移到表格下方的空白区域,按 < code > C-o</ code > 在当前行上方插入一行。连续按三次,创建 3 个空行。
112112</ p >
@@ -115,7 +115,7 @@ <h3 id="org75d1d2a">填数据</h3>
115115现在在 A2、A3、A4 里输入数字——直接打数字键就会弹提示。在 B 列输入负数的支出。
116116</ p >
117117
118- < pre class ="example " id ="orgdfdb1d6 ">
118+ < pre class ="example " id ="org0ab94ca ">
119119Income Expenses
12012010.5 -3
12112145.32 -9.87
@@ -124,9 +124,9 @@ <h3 id="org75d1d2a">填数据</h3>
124124</ div >
125125</ div >
126126
127- < div id ="outline-container-org03b7828 " class ="outline-3 ">
128- < h3 id ="org03b7828 "> 用公式算余额</ h3 >
129- < div class ="outline-text-3 " id ="text-org03b7828 ">
127+ < div id ="outline-container-org480466f " class ="outline-3 ">
128+ < h3 id ="org480466f "> 用公式算余额</ h3 >
129+ < div class ="outline-text-3 " id ="text-org480466f ">
130130< p >
131131在 A5 写求和公式。按 < code > (</ code > (左括号),输入:
132132</ p >
@@ -140,7 +140,7 @@ <h3 id="org03b7828">用公式算余额</h3>
140140< code > SES</ code > 会帮你自动把单元格坐标(如 A2)转成真实的值。同理在 B5 求和支出。然后在 C5 用公式 < code > (ses+ A5 B5)</ code > 算出最终余额。
141141</ p >
142142
143- < pre class ="example " id ="org8963004 ">
143+ < pre class ="example " id ="org6c810c1 ">
144144Income Expenses
14514510.5 -3
14614645.32 -9.87
@@ -154,9 +154,9 @@ <h3 id="org03b7828">用公式算余额</h3>
154154</ div >
155155</ div >
156156
157- < div id ="outline-container-org364be22 " class ="outline-3 ">
158- < h3 id ="org364be22 "> 插入新行,公式自动调整</ h3 >
159- < div class ="outline-text-3 " id ="text-org364be22 ">
157+ < div id ="outline-container-orgaf3ab9b " class ="outline-3 ">
158+ < h3 id ="orgaf3ab9b "> 插入新行,公式自动调整</ h3 >
159+ < div class ="outline-text-3 " id ="text-orgaf3ab9b ">
160160< p >
161161假设后来又翻到几张旧账单,要在中间加几行支出。把光标移到数据区最后一行,按 < code > C-o</ code > 插入新行,填入新账目。
162162</ p >
@@ -168,9 +168,9 @@ <h3 id="org364be22">插入新行,公式自动调整</h3>
168168</ div >
169169</ div >
170170
171- < div id ="outline-container-org911cb12 " class ="outline-2 ">
172- < h2 id ="org911cb12 "> 场景二:服务器集群资源巡检</ h2 >
173- < div class ="outline-text-2 " id ="text-org911cb12 ">
171+ < div id ="outline-container-org35bb957 " class ="outline-2 ">
172+ < h2 id ="org35bb957 "> 场景二:服务器集群资源巡检</ h2 >
173+ < div class ="outline-text-2 " id ="text-org35bb957 ">
174174< p >
175175运维工作中经常要盯一批服务器的资源占用:CPU、内存、磁盘余量。这些数据来自监控系统,但如果你想把最近一次巡检的快照拉出来做个快速聚合分析,SES 很顺手。
176176</ p >
@@ -179,7 +179,7 @@ <h2 id="org911cb12">场景二:服务器集群资源巡检</h2>
179179新建 < code > server-inventory.ses</ code > ,先填表头和数据(方法跟场景一一样:"= 输文本,数字键输数值)。"Environment" 比较长,填完后光标移到 B 列任意单元格,按 < code > w</ code > 输入一个合适的宽度值(比如 12),列宽就能完整显示了:
180180</ p >
181181
182- < pre class ="example " id ="org545eb3f ">
182+ < pre class ="example " id ="org1c66545 ">
183183Hostname Environment OS CPU% Memory% Disk%
184184web-01 production ubuntu 23 45 62
185185web-02 production ubuntu 35 52 78
@@ -197,9 +197,9 @@ <h2 id="org911cb12">场景二:服务器集群资源巡检</h2>
197197</ p >
198198</ div >
199199
200- < div id ="outline-container-orgaff9b92 " class ="outline-3 ">
201- < h3 id ="orgaff9b92 "> 条件筛选:ses-select</ h3 >
202- < div class ="outline-text-3 " id ="text-orgaff9b92 ">
200+ < div id ="outline-container-orgeda6606 " class ="outline-3 ">
201+ < h3 id ="orgeda6606 "> 条件筛选:ses-select</ h3 >
202+ < div class ="outline-text-3 " id ="text-orgeda6606 ">
203203< p >
204204< code > ses-select</ code > 是 SES 内置的筛选函数:传入一个测试范围、一个比对值和结果范围,返回所有比对通过的结果。
205205</ p >
@@ -242,9 +242,9 @@ <h3 id="orgaff9b92">条件筛选:ses-select</h3>
242242</ div >
243243</ div >
244244
245- < div id ="outline-container-org5c99c80 " class ="outline-3 ">
246- < h3 id ="org5c99c80 "> 处理空值:! 标志</ h3 >
247- < div class ="outline-text-3 " id ="text-org5c99c80 ">
245+ < div id ="outline-container-org7a07a37 " class ="outline-3 ">
246+ < h3 id ="org7a07a37 "> 处理空值:! 标志</ h3 >
247+ < div class ="outline-text-3 " id ="text-org7a07a37 ">
248248< p >
249249不是每台机器都能准时回传数据。假设 < code > db-stg-01</ code > 的网络刚好断了,Disk% 单元格是空白的。如果你直接用 Emacs 自带的 < code > max</ code > 函数去算某个环境的最高磁盘占用:
250250</ p >
@@ -271,9 +271,9 @@ <h3 id="org5c99c80">处理空值:! 标志</h3>
271271</ div >
272272</ div >
273273
274- < div id ="outline-container-org0558f83 " class ="outline-3 ">
275- < h3 id ="org0558f83 "> 统计数量</ h3 >
276- < div class ="outline-text-3 " id ="text-org0558f83 ">
274+ < div id ="outline-container-org9bf8f86 " class ="outline-3 ">
275+ < h3 id ="org9bf8f86 "> 统计数量</ h3 >
276+ < div class ="outline-text-3 " id ="text-org9bf8f86 ">
277277< p >
278278用 < code > length</ code > 统计某类机器有多少台:
279279</ p >
@@ -320,9 +320,9 @@ <h3 id="org0558f83">统计数量</h3>
320320</ div >
321321</ div >
322322
323- < div id ="outline-container-orgae55aaf " class ="outline-2 ">
324- < h2 id ="orgae55aaf "> SES vs Org Table</ h2 >
325- < div class ="outline-text-2 " id ="text-orgae55aaf ">
323+ < div id ="outline-container-org9dcaefd " class ="outline-2 ">
324+ < h2 id ="org9dcaefd "> SES vs Org Table</ h2 >
325+ < div class ="outline-text-2 " id ="text-org9dcaefd ">
326326< p >
327327讲了 SES 能干什么之后,自然会问:什么时候用 SES,什么时候用 Org Table?
328328</ p >
@@ -374,9 +374,9 @@ <h2 id="orgae55aaf">SES vs Org Table</h2>
374374</ div >
375375</ div >
376376
377- < div id ="outline-container-orgbd226ad " class ="outline-2 ">
378- < h2 id ="orgbd226ad "> 导出与实用技巧</ h2 >
379- < div class ="outline-text-2 " id ="text-orgbd226ad ">
377+ < div id ="outline-container-orgb94e4fa " class ="outline-2 ">
378+ < h2 id ="orgb94e4fa "> 导出与实用技巧</ h2 >
379+ < div class ="outline-text-2 " id ="text-orgb94e4fa ">
380380< p >
381381SES 的导出很简单:选中区域,按普通 Emacs 操作复制( < code > M-w</ code > ),每列用 tab 分隔。粘贴到别的 buffer 里就是纯文本。把 tab 替换成逗号就是 CSV。
382382</ p >
@@ -387,9 +387,9 @@ <h2 id="orgbd226ad">导出与实用技巧</h2>
387387</ div >
388388</ div >
389389
390- < div id ="outline-container-orgddcd904 " class ="outline-2 ">
391- < h2 id ="orgddcd904 "> 速查:SES 常用按键</ h2 >
392- < div class ="outline-text-2 " id ="text-orgddcd904 ">
390+ < div id ="outline-container-orgd270a38 " class ="outline-2 ">
391+ < h2 id ="orgd270a38 "> 速查:SES 常用按键</ h2 >
392+ < div class ="outline-text-2 " id ="text-orgd270a38 ">
393393< table border ="2 " cellspacing ="0 " cellpadding ="6 " rules ="groups " frame ="hsides ">
394394
395395
@@ -455,6 +455,16 @@ <h2 id="orgddcd904">速查:SES 常用按键</h2>
455455< td class ="org-left "> 清空当前单元格</ td >
456456</ tr >
457457
458+ < tr >
459+ < td class ="org-left "> < code > C-c C-c</ code > </ td >
460+ < td class ="org-left "> 手动强制重算当前单元格</ td >
461+ </ tr >
462+
463+ < tr >
464+ < td class ="org-left "> < code > C-/</ code > </ td >
465+ < td class ="org-left "> 撤销(支持行列和单元格操作的撤销)</ td >
466+ </ tr >
467+
458468< tr >
459469< td class ="org-left "> < code > w</ code > </ td >
460470< td class ="org-left "> 设置当前列宽度</ td >
@@ -465,6 +475,11 @@ <h2 id="orgddcd904">速查:SES 常用按键</h2>
465475< td class ="org-left "> 显示 SES 所有按键绑定</ td >
466476</ tr >
467477
478+ < tr >
479+ < td class ="org-left "> < code > p</ code > </ td >
480+ < td class ="org-left "> 设置当前单元格的打印格式(如 %.2f 保留两位小数)</ td >
481+ </ tr >
482+
468483< tr >
469484< td class ="org-left "> < code > M-w</ code > </ td >
470485< td class ="org-left "> 复制选中区域(tab 分隔)</ td >
@@ -516,7 +531,7 @@ <h2 id="orgddcd904">速查:SES 常用按键</h2>
516531 < footer class ="footer ">
517532 < p > Generated by < a href ="http://www.gnu.org/software/emacs/ "> Emacs</ a > 29.x(< a href ="http://orgmode.org "> Org mode</ a > 9.x)</ p >
518533 < p >
519- Copyright © 2014 - < span id ="footerYear "> </ span > < a href ="mailto:runner <at> runnervmeorf1 <dot> g0vjefpjgiqevk55v1qvz15w3h <dot> ex <dot> internal <dot> cloudapp <dot> net "> lujun9972,Claude Code</ a >
534+ Copyright © 2014 - < span id ="footerYear "> </ span > < a href ="mailto:runner <at> runnervmrw5os <dot> tiverq4lmjmelp3jpsqfxviiyd <dot> bx <dot> internal <dot> cloudapp <dot> net "> lujun9972,Claude Code</ a >
520535 ·
521536 Powered by < a href ="https://github.com/emacs-china/EGO " target ="_blank "> EGO</ a >
522537 ·
0 commit comments