水木-EMACS 速成

原创 2001年06月11日 19:26:00

水木-EMACS 速成

清华水木FreeBSD 讨论区 pure

返回〗〖转发〗

【 以下文字转载自 FreeBSD 讨论区 】 
【 原文由 pure 所发表 】 
这篇文章, 希望能有更多人喜欢 emacs.                                         

   
  ------------------------------------                                       
   
  Emacs 启动:                                                                
  
  直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,                
  
  就用 emacs -nw      (No windows)起动.                                      
  
  符号说明                                                                   
   
  C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开.                          
 
  M-X         META                 META                                      
 
  在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.                     
 
   Sun上面META键就是菱形的那个键.                                            
  
   有些系统META键就是ALT键.(或者某一边的ALT键)                               
  
   C-X或 M-X的X没有大小写分别.                                               
  
  Emacs按键命令基本上是一串C-chr和M-chr组成的.                           
  
  超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽.             
  
  这一行叫作mini buffer                                                      
  
  结束Emacs按 C-x C-c                                                        
 
  取消执行 C-g                                                               
 
  有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.             
  
  上下移动   C-p 向上 (previous line) C-n向下(next line)                     
   
  左右移动   C-f 向右 (forward) C-b 向左 (backward)                          
  
  其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer里面,                     
  (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: 
r")
               问user buffer name时, 提示号 Append to buffer:                
  
               此function有两个引数,第一个是B, 就是buffer                    
 
               第二个是r, region                                             
 
               用
 隔开.                                                    
  
  (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[i].first) == i;                                          

             pair[i].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 stdio.h                                     
  
               给使用者设定用的.                                             
 
               可以用 M-x edit-options 来线上设定 (emacs结束就没有了,不过edit-options可以给你所有可修改的变数的列表,你可以放到.emacs档内.(directory-files "./" t "..*")                                           
 
  return a list of files under directory X                          
 
  (load "xxxx.el")  同#include stdio.h                                     
  
  (setq load-path (cons "~/emacs" load-path)) ; load的search path.           
        
-- 
iamafan@linuxaid.com.cn

责任编辑:知识库管理员(2001-01-03 16:57)

Emacs 速成

Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw      (No windows)起动.   符号说明 C-X...
  • oanqoanq
  • oanqoanq
  • 2009年02月17日 09:14
  • 548

Emacs lisp入门

Emacs lisp 入门
  • u014473564
  • u014473564
  • 2015年04月12日 17:57
  • 1817

水木-emacs的FAQ

水木-emacs的FAQ清华水木 null〖返回〗〖转发〗1、【 在 scaner (默默相随) 的大作中提到: 】 ∶ emacs不同于vi,按着向下,没有个底, ∶ 一保存,结果文件结尾是n个空行...
  • hem
  • hem
  • 2001年06月11日 19:20
  • 1233

水木租房、二手、购房简易爬虫

准备租房,对于中介提供的房子,大部分不满意,还不如去水木自己看看。于是写了一个小爬虫,帮我自动筛选出下列小区的出租信息。Python也没学过,一边百度一边拼凑出来的,见笑。...
  • maray
  • maray
  • 2016年11月14日 19:37
  • 1651

(X)Emacs 速成

直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,就用 emacs -nw (No windows)起动.符号说明C-X 表示按住CTRL键, 然後按X, 再把CTRL,...
  • harding_egg
  • harding_egg
  • 2006年08月31日 16:33
  • 558

Linux必学的60个命令(4)-网络操作

Linux必学的60个命令(4)-网络操作因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件,尤其是TCP/IP网络协议的实现尤为成熟。Linux的...
  • Coercer
  • Coercer
  • 2007年05月10日 22:10
  • 706

AngularJS 学习笔记-第一章:速成

本文章是针对于刚开始学习angularJS的菜鸟们,根据(精通angularJS一书)做的精简版读书笔记, 旨在通过笔记让更多的前端开发,在一周之内可以入门AngularJS。...
  • honeywell1000
  • honeywell1000
  • 2016年07月18日 14:40
  • 568

iOS 开发一周速成 -- 项目实战中常用API

音量调节: [[MPMusicPlayerController applicationMusicPlayer] setVolume:0.0f]; //最小音量 [[MPMusicPlayer...
  • sea918
  • sea918
  • 2012年08月14日 09:59
  • 3458

javascript语言速成

因为是个轻量级语言.把他所有要点写成一篇文章也应该
  • skyjie6
  • skyjie6
  • 2014年08月18日 13:51
  • 1492

枚举自动对象属性

#include #include #include #include #include #include  using namespace std; const wstring vtname(int...
  • lqefn
  • lqefn
  • 2010年08月16日 18:47
  • 749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:水木-EMACS 速成
举报原因:
原因补充:

(最多只允许输入30个字)