Skip to content

Commit 58d1c63

Browse files
author
lujun9972
committed
增加bbdb v3的配置说明
1 parent 832bc2b commit 58d1c63

File tree

1 file changed

+327
-2
lines changed

1 file changed

+327
-2
lines changed

bbdb简单使用教程.org

Lines changed: 327 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,333 @@ This may also be applied to multiple records at once by *.
126126

127127
交换光标所在的field与上一行field的位置
128128

129-
交换的field必须在同一条记录中,且具有相同的类型
129+
若带参数0执行该命令,则光标所在的域与mark标记的域进行交换
130130

131131
With non-zero numeric argument ARG, the previous field is moved past ARG fields.
132132

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

Comments
 (0)