@@ -126,8 +126,333 @@ This may also be applied to multiple records at once by *.
126
126
127
127
交换光标所在的field与上一行field的位置
128
128
129
- 交换的field必须在同一条记录中,且具有相同的类型
129
+ 若带参数0执行该命令,则光标所在的域与mark标记的域进行交换
130
130
131
131
With non-zero numeric argument ARG, the previous field is moved past ARG fields.
132
132
133
- With argument 0, the field indicated by point is interchanged with the one indicated by mark.
133
+ 交换的field必须在同一条记录中,且具有相同的类型
134
+
135
+ *** n (bbdb-next-record)/ p (bbdb-prev-record)
136
+
137
+ 移动到下一个/上一个记录,若带前缀参数N,则下移/上移N条记录
138
+
139
+ *** t (bbdb-toggle-records-layout)
140
+
141
+
142
+ 切换是否显示记录中具体域的说明.
143
+
144
+ 若带参数0调用该函数,则强制光标所在记录不显示记录域说明,此时,所有的域信息都压缩到一行内显示.
145
+
146
+ 当待其他参数调用该函数时,则强制光标所在记录显示记录中的域说明时,此时,当前记录使用多行样式显示.
147
+
148
+ 若使用`*t'而不是`t',则buffer内所有的记录都同时切换显示样式
149
+
150
+ *** T (bbdb-display-record-completely)
151
+
152
+ 谢换是否展示当前记录的所有域,这时平时隐藏不显示的`creation-date'和`timestamp'都会显示出来.
153
+
154
+ *** o (bbdb-omit-record)
155
+
156
+ 隐藏当前记录,但并不会将当前记录从BBDB数据库中删除掉.
157
+
158
+ 若带参数N执行该命令,则会隐藏下面N条记录,N可以为负数
159
+
160
+ *** m (bbdb-mail)
161
+
162
+ 发送电子邮件給当前的联系人. 默认邮件地址为记录中的第一个email地址.
163
+
164
+ 若带参数N调用该函数,则表示邮件地址使用记录周公的第N个email地址
165
+
166
+ 若使用`*m'而不是`m',则表示給该buffer中的所有联系人发送电子邮件
167
+
168
+ *** s /C-x C-s (bbdb-save)
169
+
170
+ 保存BBDB数据库到文件中
171
+
172
+ *** M-d (bbdb-dial)
173
+
174
+ 该命令会尝试着去拨打光标所在的数字. 若光标处于一条记录的开头,则会拨打第一个phone域.
175
+
176
+ 具体原理不明...
177
+
178
+ *** q (quit-window)
179
+
180
+ 退出bbdb窗口,但不会kill bbdb buffer
181
+
182
+ *** ? (bbdb-help)
183
+
184
+ 在minibuffer中显示简易帮助信息
185
+
186
+ *** h (bbdb-info)
187
+
188
+ 显示bbdb的info文档
189
+
190
+ 若bbdb的info文档没有安装在标准的info目录下,可以通过设置`bbdb-info-file'变量来明确指明bbdb info文件的路径
191
+
192
+ *** (bbdb-print)
193
+
194
+ 将BBDB记录导出到Tex文件中.
195
+
196
+ *** c (bbdb-create)
197
+
198
+ 创建新记录保存新的联系人信息
199
+
200
+ *** C (bbdb-copy-records-as-kill)
201
+
202
+ 将当前记录拷贝到kill ring中
203
+
204
+ 若使用`* C'则拷贝buffer中的所有记录到kill ring中
205
+
206
+ *** b (bbdb)
207
+
208
+ 重新查询bbdb数据库
209
+
210
+ *** / m (bbdb-search-mail)
211
+
212
+ 搜索mail域
213
+
214
+ *** / a (bbdb-search-address)
215
+
216
+ 搜索address域
217
+
218
+ *** / c (bbdb-search-changed)
219
+
220
+ 搜索至上次保存后,改变过的bbdb记录
221
+
222
+ *** / d (bbdb-search-duplicates)
223
+
224
+ 搜索具有相同域的记录
225
+
226
+ *** / n (bbdb-search-name)
227
+
228
+ 搜索name域
229
+
230
+ *** / o (bbdb-search-organization)
231
+
232
+ 搜索organization域
233
+
234
+ *** / p (bbdb-search-phone)
235
+
236
+ 搜索phone域
237
+
238
+ *** / x (bbdb-search-xfields)
239
+
240
+ 搜索xfield域(该域存什么?我也不知道...)
241
+
242
+ *** * (bbdb-do-all-records)
243
+
244
+ 该命令用于修改紧接之后的命令的作用域,让其作用于buffer中的所有记录.(Command prefix for operating on all records currently displayed.)
245
+
246
+ 但只对某些特定的命令有效
247
+
248
+ * 配置
249
+
250
+ ** 配置项
251
+ + bbdb-file
252
+
253
+ bbdb数据库的存储路径,默认为`~/.bbdb'
254
+
255
+ + bbdb-default-area-code
256
+
257
+ 当输入新电话好吗时,使用的默认区号.
258
+
259
+ 该变量的值也会影响到拨打电话时的行为
260
+
261
+ + bbdb-address-format-list
262
+
263
+ 用于编辑/显示BBDB地址信息时的规则列表.
264
+
265
+ + bbdb-continental-postcode-regexp
266
+
267
+ 该正则表达式决定了BBDB的address是否为欧洲格式的地址.
268
+
269
+ 若address域的值匹配该正则表达式,则表示该address为欧洲格式的地址,否则认为是美国格式的地址
270
+
271
+ + bbdb-case-fold-search
272
+
273
+ 当使用bbdb系列的搜索命令进行搜索时,是否大小写敏感
274
+
275
+ + bbdb-auto-revert
276
+
277
+ 若在Emacs中没有修改bbdb buffer中的信息,而此时,bbdb-file发生了改变,则自动重新加载bbdb-file的新内容
278
+
279
+ + bbdb-pop-up-layout
280
+
281
+ pop-up BBDB buffer时使用的默认布局(mail,news...). 默认为'pop-up-multi-line
282
+
283
+ + bbdb-pop-up-window-size
284
+
285
+ pop-up BBDB buffer时的高度.
286
+
287
+ 若为整数N,则表示高度为N行
288
+
289
+ 若为一个介于0到1之间的小数N,则拆分拥有最高高度的window,并且BBDB buffer占据N倍的高度
290
+
291
+ 若为t,则表示使用 `display-buffer'/`pop-to-buffer' 创建BBDB window??(貌似会占据next-window来显示BBDB buffer)
292
+
293
+ + bbdb-completion-list
294
+
295
+ 控制`bbdb-complete-mail'的补全方式. 该函数用于在mail buffer中补全联系人信息
296
+
297
+ 该值可以为一个symbol list,用来指明补全哪些域的值. 这些symbol可以是:
298
+
299
+ - fl-name :: first and last name
300
+
301
+ - lf-name :: last and first name
302
+
303
+ - organization ::
304
+
305
+ - aka ::
306
+
307
+ - mail :: all email address of each record
308
+
309
+ - primary :: first email address of each record
310
+
311
+ 该值也可以为t,表示所有上面symbol的集合
312
+
313
+ 若该值为nil,则表示不提供补全
314
+
315
+ + bbdb-complete-mail-allow-cycling
316
+
317
+ 当调用`bbdb-complete-mail'补全email地址时,是否允许循环展示补全项
318
+
319
+ + bbdb-user-mail-address
320
+
321
+ 该变量的值为一个正则表达式,该正则表达式用于标识某email地址是否是用户自己的email地址.
322
+
323
+ 多数BBDB的命令根据变量`bbdb-message-headers'从消息中抽取出发送方和接收方的email地址. 但若发送方的email地址匹配上了`bbdb-user-mail-address-re',则该email地址依然被认为是接收方的email地址.
324
+
325
+ 改变量的默认值为`(user-login-name)'
326
+
327
+ + bbdb-add-mails
328
+
329
+ 该变量指明了当收到某个联系人从新的email地址发来的消息后,是否增加该新email到联系人信息中.
330
+
331
+ 可选值有:
332
+
333
+ - t :: 自动添加该新的email地址
334
+
335
+ - query :: 询问用户是否添加该新的email地址
336
+
337
+ - nil :: 忽略新的email地址
338
+
339
+ - 数字N :: 在N秒内,BBDB显示该新的email地址,但只在当前session有效
340
+
341
+ - 函数fn :: 使用record和新email地址作为参数来调用fn,fn需要返回t,'query,nil或一个数字
342
+
343
+ - 正则表达式re :: 若新的email地址符合该正则,则忽略该新的email地址,否则询问用户是否添加该email地址
344
+
345
+ + bbdb-new-mails-primary
346
+
347
+ 为联系人新增email地址时,该新email地址是否作为primary mail address(即该新email地址排在其他email地址的前面).
348
+
349
+ 可选值为:
350
+
351
+ - t :: 让该新增的email地址自动称为primary mail address
352
+
353
+ - query :: 询问用户是否作为primary mail address
354
+
355
+ - nil :: 不作为primary mail address,会将新email地址放到列表最后面.
356
+
357
+ - 函数fn :: 该函数接收两个参数:record和新email地址. 该函数需要返回t,'query或nil
358
+
359
+ - 正则表达式re :: 若新email地址匹配该re,则不作为primary mail address,否则询问用户是否作为primary mail address
360
+
361
+ + bbdb-ignore-redundant-mails
362
+
363
+ 当增加新mail地址时,若联系人中的旧mail地址是新mail地址的更一般形式(例如,已有的mail地址为
[email protected] ,而新mail地址为
[email protected] )时,是否覆盖原mail地址.
364
+
365
+ 可选的值为为:
366
+
367
+ - t :: 自动忽略新email地址
368
+
369
+ - query :: 询问用户是否忽略新email地址
370
+
371
+ - nil :: 使用新email地址,覆盖原email地址
372
+
373
+ - 数字N :: 在接下来的N秒内,保留新email地址
374
+
375
+ - 函数fn :: fn接收两个参数:record及新email地址,fn需要返回t,'query,nil或数字
376
+
377
+ - 正则表达式re :: 符合该正则表达式的email地址会替代原email地址,否则询问用户是否忽略新email地址
378
+
379
+ + bbdb-check-auto-save-file
380
+
381
+ 若值为t,则BBDB会检查它的auto-save file,若auto-save file比`bbdb-file'要新,则BBDB会恢复auto-save file
382
+
383
+ + bbdb-ignore-message-alist
384
+
385
+ 描述哪些message不允许触发自动新建BBDB联系人记录.
386
+
387
+ + bbdb-accept-message-alist
388
+
389
+ 描述哪些message允许触发自动新建BBDB联系人记录.
390
+
391
+ + bbdb-mua-auto-update-p
392
+
393
+ 决定了`bbdb-mua-auto-update'如何自动更新BBDB记录. 可选值:
394
+
395
+ - nil :: 什么也不做
396
+
397
+ - search :: 搜索匹配ADDRESS的记录
398
+
399
+ - update :: 搜索匹配ADDRESS的记录,如有必要,会更新name和mail域
400
+
401
+ - query :: 搜索匹配ADDRESS的记录,若记录不存在,提示用户是否创建新记录
402
+
403
+ - create :: 搜索匹配ADDRESS的记录,若记录不存在,则创建新记录
404
+
405
+ - t :: 搜索匹配ADDRESS的记录,若记录不存在,则创建新记录
406
+
407
+ - 函数fn :: bbdb调用该函数,该函数需要返回nil,search,update,query,create或t
408
+
409
+ ** hooks
410
+
411
+ | hook | 调用hook的时机 | 调用hook时的参数 | 其他说明 |
412
+ |----------------------------------+----------------------------------------------------+----------------------------------------+-------------------------------------------------------------------|
413
+ | bbdb-display-hook | 展示*BBDB* buffer后 | | |
414
+ | bbdb-create-hook | 在BBDB创建新联系人记录前 | 新增的record | bbdb-change-hook也会被触发 |
415
+ | bbdb-change-hook | *BBDB* buffer发生改变前 | 修改的record | |
416
+ | bbdb-mode-hook | 进入bbdb mode后 | | |
417
+ | bbdb-notice-record-hook | 当发现message中的email地址包含在某个联系人记录中后 | 包含message中email的联系人记录 | 若某message中包含同一联系人的多个email地址,该hook也只会被触发一次 |
418
+ | bbdb-notice-mail-hook | 当发现message中的email地址包含在某个联系人记录中后 | 包含message中email的联系人记录 | 若某message中包含同一联系人的多个email地址,该hook也会被触发多次 |
419
+ | bbdb-after-read-db-hook | 当`bbdb-file'被读取之后 | | 当BBDB buffer revert之后还会再次触发该hook |
420
+ | bbdb-initialize-hook | BBDB的初始化函数`bbdb-initialize'被调用之后 | | |
421
+ | bbdb-canonicalize-mail-functioin | 当BBDB notice a message后 | message中的corresponding email address | 该函数用于对message中的对应email地址作一次转换,转换后的结果才拿来与BBDB中的记录进行对比,或添加入BBDB. 若该函数返回nil,则BBDB认为该message中无email address |
422
+
423
+ * hacks
424
+ ** 函数
425
+ *** (bbdb-display-records records )
426
+
427
+ 在bbdb buffer中显示records中的记录
428
+
429
+ ** 变量
430
+ *** bbdb-records
431
+
432
+ 该变量的值为当前bbdb buffer中的record列表
433
+
434
+ ***
435
+ * FAQ
436
+
437
+ ** 如何修改BBDB创建联系人的流程
438
+
439
+ 使用`bbdb-create'新建联系人时,会以此提示你输入一系列的联系人的信息,包括姓名,所属机构,电子邮件,地址,电话,备注. 但若想让BBDB在创建联系人时也提示你输入其他额外的信息该如何作呢?
440
+
441
+ 下面是一个例子,它让`bbdb-create'新建联系人时,还会提示你输入生日信息:
442
+ #+BEGIN_SRC emacs-lisp
443
+ ;; 该例子抄至sachachua的博客
444
+ ;; 该例子为bbdb v2的例子,有待改成bbdb v3
445
+ (defadvice bbdb-read-new-record (after wicked activate)
446
+ "Prompt for the birthdate as well."
447
+ (bbdb-record-putprop ad-return-value 'birthdate
448
+ (bbdb-read-string "Birthdate (YYYY.MM.DD): ")))
449
+
450
+ #+END_SRC
451
+
452
+ ** 如何将bbdb中保存的联系人信息导入到手机中
453
+
454
+ 最简单的方法,就是使用"bbdb-to-outlook.el"将bbdb导出为.csv文件. 然后在手机上导入该.csv文件
455
+
456
+ 1. 加载"bbdb-to-outlook.el"
457
+ 2. 使用`bbdb'显示bbdb联系人信息
458
+ 3. 键入`O'会运行`bbdb-to-outlook'命令,输入保存的csv文件路径即可.
0 commit comments