使用Forms-mode打开控制文件.(注意是控制文件而不是数据文件) 打开控制文件后,不会显示控制文件的内容,相反它显示的是相关数据文件中的一条记录. 严格来说,form-mode会打开两个buffer:”forms buffer”用来打开控制文件并显示记录内容;”data buffer”保存数据文件但通常来说是不可见的.
类似`forms-find-file-other-window`,但显示在另一个窗口中
更新数据文件
Forms-mode中,除了<TAB>,所有的命令都以C-c开头. Forms-mode对普通模式和只读模式下有不同的key-map,一般在可读模式下不的按键要简单许多,它不用C-c前缀,也不用加ctrl字符,例如用`n`代替`C-c C-n`
显示下一条记录,若加了数字参数N,则表示显示下面第N条记录
显示上一条记录,若加了数字参数N,则表示显示上面第N条记录
跳到指定的记录
跳到第一条记录
跳到最后一条记录,该命令同时会重新计算数据文件中的记录数量
跳到当前记录下一个域,若有数字参数N表示跳到下N个域,如果到达最后一个域,则跳转回第一个域.
切换read-only模式
在当前记录前插入一条新记录. 若加了数字参数,表示新纪录插在当前记录后面.
一般情况下,forms认为数据文件中的一行对应一条记录,记录由多个域组成,域之间由特定的分隔符分隔.
控制文件的格式为一段Lisp程序,在这段Lisp程序中定义了使用的数据文件和数据文件的格式与属性. 在控制文件中需要设置以下几个Lisp变量
(setq forms-file "my/data-file")
;; to maintain a gzipped database:
(defun gzip-read-file-filter ()
(shell-command-on-region (point-min) (point-max)
"gzip -d" t t))
(setq forms-read-file-filter 'gzip-read-file-filter)
(defun gzip-write-file-filter ()
(make-variable-buffer-local 'require-final-newline)
(setq require-final-newline nil)
(shell-command-on-region (point-min) (point-max)
"gzip" t t))
(setq forms-write-file-filter 'gzip-write-file-filter)
(defun my-modified-record-filter (record)
;; Modify second field.
(aset record 2 (current-time-string))
;; Return the field vector.
record)
(setq forms-modified-record-filter 'my-modified-record-filter)
(defun my-new-record-filter (fields)
(aset fields 5 (login-name))
(aset fields 1 (current-time-string))
fields)
(setq forms-new-record-filter 'my-new-record-filter)
forms-format-list中的各元素可以是字符串,数字,list或symbol.
下面是一个forms-format-list的例子
;; This demo visits `/etc/passwd'.
(setq forms-file "/etc/passwd")
(setq forms-number-of-fields 7)
(setq forms-read-only t) ; to make sure
(setq forms-field-sep ":")
;; Don't allow multi-line fields.
(setq forms-multi-line nil)
(setq forms-format-list
(list
"====== /etc/passwd ======\n\n"
"User : " 1
" Uid: " 3
" Gid: " 4
"\n\n"
"Name : " 5
"\n\n"
"Home : " 6
"\n\n"
"Shell: " 7
"\n"))
;; This sets `field1' to 1, `field2' to 2, and so on.
(setq forms-number-of-fields
(forms-enumerate
'(field1 field2 field3 ...)))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。