注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

转载:Emacs常用命令整理  

2008-11-18 13:13:46|  分类: L-Emacs |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Emacs 中文手册
====================================================
[符号]
--------------------------------------
C-                    意思是按住 Ctrol 键
M-                    意指 Meta 键 (键盘上若无Meta 键,则可以ALT 或 ESC 键来取而代之)
DEL                   意指退格键 (不是 删除(Delete) key)
RET                   意指回车键
SPC                   意指空格键
ESC                   意指Escape键
TAB                   意指Tab键
像 "C-M-" (or "M-C") 这样连在一起的意味着同时按住 Control 和 Meta 键不放.
  
  
  
  
[进入Emacs]
----------------------------------------
emacs                 要进入GNU Emacs,只需键入它的名字         
C-z                   挂起Emacs:                        
C-x C-c               永久离开Emacs                       
  
  
[用方向键]
---------------------------------------
        上一行 C-p (Prev line)
                .
                .
                .                  
向左移 C-b .... 。.... 向右移 C-f (Forward character)
(Backward )   .
                .
                .
        下一行 C-n (Next line)
[文件]
----------------------------------------
C-x C-f                读取文件到Emacs
C-x r                  只读的方式打开一个文件
C-x C-q                清除一个窗口的只读属性                  
C-x C-s                保存文件到磁盘         
C-x s                  保存所有文件                        
C-x i                  插入其它文件的内容到当前缓冲            
C-x C-v                用将要读取的文件替换当前文件
C-x C-w                将当前缓冲写入指定的文件                 
C-x C-q                Version control checkin/checkout               
[错误恢复]
---------------------------------------
C-g                    取消当前要执行的命令                  
M-x recover-file       恢复系统崩溃后丢失的文件                 
C-x u或C-_             撤销更新                           
M-x revert-buffer      使缓冲回复到初始内容                  
C-l                    Redraw garbaged screen                 
[增量查找]
---------------------------------------
C-s                    向前查找                           
C-r                    向后查找                           
C-M-s                  规则表达式查找                       
C-M-r                  反向规则表达式查找                     
M-p                    选择前一个查找字符串                  
M-n                    选择下一个查找字符串                  
RET                    退出增量查找                        
DEL(Backspace)         取消上一个字符的作用                  
C-g                    退出当前查找模式                     
                       可重复使用C-s和C-r来改变查找方向
                       
[替换]
---------------------------------------
M-%                    交互式地替换一个文本串                 
M-x replace-regexp     交互式地替换一个规则表达式               
SPE                    替换当前的并移动到下一处                 
,                      替换当前的但不移动到下一处               
L(Backspace)           不替换当前的并移动到下一处               
!                      替换所有剩下的符合条件的文本            
RET                    退出替换模式                        
C-r                    进入递归的编辑模式                     
C-M-c                  退出递归的编辑模式                     
[光标移动]
---------------------------------------
C-f                    向前一个字符                        
C-b                    向后一个字符                        
M-f                    向前一个字                        
M-b                    向后一个字                        
C-p                    向上一行                           
C-n                    向下一行                           
C-a                    到行首                             
C-e                    到行尾                             
M-a                    到句首                             
M-e                    到句尾                             
M-{                    到段首                             
M-}                    到段尾                             
C-x [                  到页首                             
C-x ]                  到页尾                             
C-M-f                  到表达式首部                        
C-M-b                  到表达式尾部
M-                    到缓冲尾部                        
C-v                    滚动到下一屏                        
M-v                    滚动到上一屏                        
C-x                   滚动到左边一屏(内容向右移动)            
C-u C-l                滚动当前行到屏幕中央
C-M-n                  移到结尾的)、}或]
C-M-p                  移到开始的)、}或]
C-M-u                  向上移到父结构开始
C-M-d                  向下移到父结构开始
[复制、粘贴、剪切、删除]
-----------------------------
C-d                    向前delete字符                       
DEL(Backspace)         向后delete字符                       
M-d                    向前delete到字首                     
M-DEL(Backspace)       向后delete到字尾                     
M-0 C-k                向前delete到行首                     
C-k                    向后delete到行尾                     
C-x DEL(Backspace)     向前delete到句首                     
M-k                    向后delete到句尾                     
M-- C-M-k              向前delete到表达式首部                 
C-M-k                  向后delete到表达式尾部                 
C-w                    Kill区域                           
M-w                    拷贝区域到Kill Ring                     
M-z              Kill到下一个给定字符出现的位置            
C-y                    拉回(yank)上次kill的内容               
M-y                    用更早kill的内容取代拉回的上次kill的内容     
[标记Marking]
-----------------------------
C-SPC或C-@             标记当前位置                        
C-x C-x                以字符为单位使用移动命令动态标记区域         
M-@                    以字为单位使用移动命令动态标记区域         
M-h                    标记一段                           
C-x C-p                标记一页                           
C-M-@                  标记一个表达式                       
C-M-h                  标记一个函数                        
C-x h                  标记整个缓冲区                       
[寄存器]
-----------------------------
C-x r s                存储区域到寄存器                     
C-x r i                插入矩形内容到缓冲                     
C-x r SPC         存储光标位置到寄存器                  
C-x r j          跳跃到寄存器中存储的光标位置            
[矩形]
-----------------------------
C-x r r                拷贝一个矩形到寄存器                  
C-x r k                Kill矩形                           
C-x r y                拉回矩形                           
C-x r o                打开一个矩形, 将文本移动至右边            
C-x r c                清空矩形                           
C-x r t                为矩形中每一行加上一个字符串前缀
C-x r i r              从r缓冲区内插入一个矩形           
[标记Tags]
-----------------------------
M-.                    查找标记                           
C-u M-.                查找标记下一次出现的位置                 
M-x visit-tags-table   指定一个新的标记文件                  
M-x tags-search        Regexp search on all files in tabs table           
M-x tags-query-replace 在所有文件中执行查询-替换               
M-,                    继续进行上一次标记查找或查询-替换           
[窗口与缓冲]
-----------------------------
C-x 1                  删除所有其它窗口
C-x 5 2                     
C-x 2                  上下分割当前窗口
                     
C-x 3                  左右分割当前窗口

C-x 5 0                    
C-x 0                  删除当前窗口   
                     
C-M-v                  滚动其它窗口                        
C-x o                  切换光标到另一个窗口                  
C-x 4 b C-x 5 b        选择另一个窗口中的缓冲
C-x 5 C-o                 
C-x 4 C-o              显示另一个窗口中的缓冲
C-x 5 f               
C-x 4 f                在另一窗口中查找并打开文件               
C-x 5 r
C-x 4 r                在另一窗口中以只读方式打开文件            
C-x 5 d
C-x 4 d                在另一窗口中运行dired命令  
C-x 5 .            
C-x 4 .                在另一窗口中查找tag
                  
C-x ^                  增加窗口高度                        
C-x {                  减小窗口宽度                        
C-x }                  增加窗口宽度                        
C-x b                  选择另一个缓冲                       
C-x C-b                列出所有的缓冲                       
C-x k                  Kill一个缓冲                        
[分栏编辑]
C-x 6                 2C-command
C-x 6 s                  2C-split
C-x 6 b    2             C-associate-buffer
C-x 6 2    2             C-two-columns
[格式]
-----------------------------
TAB                    缩进当前行(与模式相关)                 
C-M-\                  缩进区域(与模式相关)               
C-M-q                  缩进表达式(与模式相关)                 
C-x TAB                Indent region rigidly arg. Columns            
C-o                    在光标后插入一个新的行                 
C-M-o                  静态地将一行下移                     
C-x C-o                删除光标附近的空行(留下一行)            
M-^                    与上一行合并成一行                     
M-                     删除光标附近的所有空格                 
M-SPC                  删除光标附近的空格(留下一格)            
M-q                    Fill paragraph                        
C-x f                  Set fill column                        
C-x .                  设置每一行开始的前缀                  
M-g                    设置字体                           
[置换]
-----------------------------
C-t                    字符置换                           
M-t                    字置换                             
C-x C-t                行置换                             
C-M-t                  表达式置换                        
[大小写]
-----------------------------
M-u                    将一个字设置为大写                     
M-l                    将一个字设置为小写                     
M-c                    将一个字首字母设置为大写                 
C-x C-u                将一个区域设置为大写                  
C-x C-l                将一个区域设置为小写                  
[补全]
-----------------------------
TAB                    最大程度地补全命令                     
SPC                    补全命令中的一个字                     
RET                    完成并执行一个命令                     
?                      列出命令所有可能的后续部分               
M-p                    列出在当前命令之前输入的命令            
M-n                    列出在当前命令之后输入的命令            
M-r                    用规则表达式在命令历史记录中向后搜寻         
M-s                    用规则表达式在命令历史记录中向前搜寻         
C-x ESC ESC            重复执行上一条命令                     
[Shells]
-----------------------------
M-!                    执行一个shell命令                     
M-|                    在一个区域上执行sheel命令               
C-u M-|                通过shell命令过滤区域                  
M-x shell              在窗口中启动一个shell                  
[缩进]
-----------------------------
C-x TAB                indent-rigidly
[规则表达式]
-----------------------------
.                      除换行符外的所有单个字符                 
*                      零个或多个重复                       
+                      一个以上的重复                       
?                      零个或一个重复                     
|                      选择(or)                        
(…)                    分组                             
n                      与第n个组相同的文本                  
b                      At work break                        
B                      Not at work break
[编程]
-----------------------------                  
C-M-a                  到函数首部                        
C-M-e                  到函数尾部
C-M-h                  标记一个函数
[GDB调试]
-----------------------------
.启动gdb
gdb bayonne
gdb --args bayonne -vvv script.scr
.利用帮助
help 命令类别名
help 命令名
.调试指定程序
file  /home/cnscn/a.out
.运行程序
r[un]
r[un] -vvv script.scr
.设置断点
按照函数名设置断点
b[reak] main
b[reak] 'namespace::Class::func()'
.按照文件名和行数设置断点
b[reak] methods.cpp:523
.检查状态
检查堆栈
b[ack]t[race]
up
down
检查当前函数的源代码
l[ist]
检查/改变变量值
p[rint] var
p[rint] ptr->mem
p[rint] *ptr
p[rint] ('namespace::Class') *this
p[rint] (('namespace::Class') *this)->a.b.c
p[rint] var=value
检查类
ptype ptr
set print object on
whatis ptr
检查并启用/禁用断点
set breakpoint pending on
info b[reakpoints]
enable [N]
disable [N]
检查并切换线程
info th[reads]
thread N
检查寄存器
info reg
info reg esp
检查内存
x/10s *0xaabbccdd
x/5x var
.继续运行
运行到某一行即停止,当前函数返回时也停止
advance source.cpp:123
运行到当前函数返回为止
fin[ish]
继续运行直到程序结束或下一个断点
c[ontinue]
.信号
检查当前的信号处理策略
info signals
改变信号处理策略
handle SIGINT pass
handle SIGINT nostop
.与Emacs配合使用
建议使用Emacs-23。设定别名
  alias emacs='emacs --enable-font-backend -fn "Dejavu Sans Mono-12"'
修改~/.emacs,把下面这一行加入
(defvar gdb-many-windows t)
在Emacs里启动gdb
M-x gdb
开启多窗口模式
M-x gdb-many-windows
进入gud-tooltip-mode
M-x gud-tooltip-mode
                       
[自定义设置]
-----------------------------
.设定预设的输入法,将下面这一行加入到 ~/.emacs 档案中:
(custom-set-variables '(default-input-method "chinese-array30"))
在启动 Emacs 后,您就可以直接以 C-\ 指令在英文输入和行列输入法之间切换了

[FAQ]
-----------------------------

.但是有时候用行列打不出来,需要切换成注音输入法。
有两种方式可以达成这个目的:
  a. C-x RET C-\ chinese-zozy RET
  b. C-u C-\ chinese-zozy RET
  作者建议您使用第二种方式,因为它同时也是作为两种输入法间切换的指令。
  接下来您只要键入 C-u C-\ RET 就可以在行列和注音这两者间作切换了。
(注意:中英输入法间的切换还是以 C-\ 指令为之。)
  以后我们在不同中文输入法间作切换将可以 C-u C-u C-\ 达成,
  原本作者是建议以 M-\ 来补足这个想法,
  但是 M-\ 很不幸已经作为 delete-horizontal-space 指令了。
  不然 C-\ 搭配 M-\ 不是很漂亮吗?
  这样子您应该可以理解如何使用中文输入环境了吧!
. narrow 功能.用于隐藏文本,在进行string replace时十分有用选中要保留的文本, 然后C-x n n 或M-x narrow-to-region 要展开文本: C-x n w 或 M-x widen
. emacs的自动排版用M-q
. window下面用emacs远程编辑文件,可以用 ftp方式:
    C-x C-f RET /ftp:user@host:/path/test.txt
    ssh方式: 下载plink.exe,将其路径加入PATH变量
    C-x C-f RET /ftp:user@host:/path/test.txt
. emacs下的su 可以用C-x C-f安下列方式实现su文件编辑
    /su::/etc/foobar.conf
. 用空格代替tab (setq-default indent-tabs-mode nil)
    M-x untabify
   
. 指定文件的编码方式:C-x RET f
. 捕捉程序的输出可以用
    C-u M-! ls
. 如何在dos和unix文件类型之间转化
    C-x RET f unix   转化成Unix文件格式
    C-x RET f dos    转化成dos文件格式
. hexl   将二进制文件转化成emacs十六进制模式可以用的格式
.键绑定
  1. 记住在所有要绑定到快捷键的函数上面加上(interactive)关键字,否则,会发生(wrong-type-argument commandp my-command)的错误
    对于要绑定到鼠标的函数,要在函数声明中指定参数(event),在修饰段,加入(interactive "e"),然后才能绑定
  2. 对于要传递参数的函数,可以用lambda匿名函数来实现
    (global-set-key [(prior)]
        '(lambda () "Previous" (interactive) (scroll-down 1)))
    或则
    (global-set-key [(prior)]
        (function (lambda () "Previous" (interactive) (scroll-down 1))))
    记住对于 global-set-key函数需要的第二个参数是一个symble或者是list
  3. (read-event)可以得到emacs的键码的内部表示
  4. 如果你觉得每次为了关闭一个buffer都要按C-x k很麻烦,那么你可以这样绑定:
    (global-set-key (kbd "") (lambda () (interactive) (kill-buffer (current-buffer)))
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/48817/showart_394355.html
  评论这张
 
阅读(397)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017