vi简介

Anonymous

vi简介

Anonymous
25年前
#1
在Emacs下, C-x C-e 可以执行(evaluate, 求值)游标左边的叙述.
结果会出现在minibuffer.
lisp-interaction-mode中 C-j 可以evaluate, 并且把结果append到 buffer.
lisp 程式由一堆list 构成.称为expression.
每个expression 都回传回一个值.
有些expression有副作用, 如删掉一个字.
(这跟C 的int delete_char() 意思一样, 它传回int,
并且删掉某个char)
定义函式:
(defun NAME (ARGS-LIST)
"注解" ; optional
(interactive) ; optional
BODY)
定义一个叫NAME的函式. BODY 是一堆expression.
注解是用来给C-h f显示的.
(interactive) 表示这个函示会和user/buffer作用.
(interactive "B") 表示执行此函式先问user一个buffer的名字,
然後当作参数传给它. (如, 当user透过key-binding
或者 M-x 呼叫此函式时)
(interactive "BAppend to buffer: \nr")
问user buffer name时, 提示号 Append to buffer:
此function有两个引数,第一个是B, 就是buffer
第二个是r, region
用\n 隔开.
(interactive "p") 用C-u 设的prefix 把它当作参数传给我.
预设值==4. C-u C-f 向右移四个字
一些lisp 函式:
(list 1 2 3 4) 产生 '(1 2 3 4)
(car '(1 2 3 4) 1
(cdr '(1 2 3 4) '(2 3 4)
(cons 1 '(2 3 4)) '(1 2 3 4)
(cons 1 2) (1 . 2)
(cons 0 (cons 1 (cons 2 nil)))
等於 '(0 1 2)
{list 是用 pair 串起来的,
用C 表示:
pair: {Object *first, Object *second};
*(pair.first) == i;
pair.second == pair[i+1]; }
(cons '(1 2) '(3 4)) '((1 2) 3 4)
(setq a 1)
(1+ a) ; a+1
(+ 2 a) ; a+2
(* 1 2 3 4)
(current-buffer) ; 传回目前buffer的资料物件
(switch-to-buffer (other-buffer))
(set-buffer)
(buffer-size)
(setq current-pos (point))
(point-min)
(point-max)
(message "Hello") ; 在minibuffer显示Hello
(if (test)
(then-part)
(else-part))
(cond ((test1) BODY1)
((test2) BODY2)
(t OTHER-WISE)
(let ((var1 value) ; local variable
var2 ; no value
(var3 value)
...)
BODY ...)
(lambda (ARG-LIST) ...) 同 defun, 但是没有名字 (anonymous).
可以存到变数去:
(setq hello (lambda () (message "Hello,World")))
(funcall hello)
(goto-char (point-max))
(defvar VAR VALUE "*注解") 如果VAR 不存在才定义. 有注解可以用
C-h v 看. 注解打*号表是使用者可以直接改/ 这个变数本来就是
给使用者设定用的.
可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
不过edit-options可以给你所有可修改的变数的列表,你可以
放到.emacs档内.
(directory-files "./" t "\\..*")
return a list of files under directory X
(load "xxxx.el") 同#include
给使用者设定用的.
可以用 M-x edit-options 来线上设定 (emacs结束就没有了,
不过edit-options可以给你所有可修改的变数的列表,你可以
放到.emacs档内.
(directory-files "./" t "\\..*")
return a list of files under directory X
(load "xxxx.el") 同#include
(setq load-path (cons "~/emacs" load-path)) ; load的search path.
(autoload ...) 不像load会直接evaluate 整个档案, 而是需要时再
load.
(local-unset-key [(control c)])
(local-set-key [(control c) a] 'forward-sexp)
sexp 就是一个expession, n个expression如果用括号括起来就算一个.
(expression的定义随语言的不同而有不同, 在C, lisp
tex, html, fortran 下皆有差异)
--
以上纯属个人意见,请多多指教, PGP 检查码
Yung-Ching Hsiao (萧永庆) EBCD FCD0 AB43 845F
1D7B 2E3C 2641 721A
※编辑: modico (modico) 于 2000-06-03 21:56:48 在 [202.117.82.2] 编辑本文
提刀阿叔
vi的同好