免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 902 | 回复: 0
打印 上一主题 下一主题

生活在Emacs中3 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-03 22:49 |只看该作者 |倒序浏览

生活在Emacs中
学习Emacs的秘诀
天天用,就是秘诀。
Emacs 的基本操作
我老是忘,还是记一下吧。
在C/C++代码中操作M-a     移动到当前语句的开始
M-e     移动到当前语句的末尾
C-M-a   移动到当前函数的开始
C-M-e   移动到当前函数的结尾
M-q     若光标在注释文本中间,则进行段落重排,保留缩进和前导字符
C-M-h   把光标放在当前函数开头,把文本块标记放在函数结尾,
        即把函数整个选作为一个文本块。
C-c C-q 对整个函数进行缩进
C-x h   选定整个buffer,  然后C-M-\可以对代码进行重新排版
C-c C-u 移动到当前预处理条件的开始位置
C-c C-p 移动到上一个预处理条件
C-c C-n 移动到下一个预处理条件
M-;     对当前行进行注释
C-x C-x 快速返回移动前的光标位置
C-c C-c 对一块代码进行注释;取消注释用命令 uncomment-region
Emacs 中的光标移动C-f     光标前进一个字符
C-b     光标后退一个字符
C-p     上移一行
C-n     下移一行
M-f     前进一个单词
M-b     后退一个单词
C-a     行首
C-e     行尾
M-a     句首
M-e     句尾
M-{     上一个段落
M-}     下一个段落
C-v     屏幕上卷一个屏
M-v     屏幕下卷一个屏
C-M-v   另一个窗口下卷一个屏幕
C-M-V   另一个窗口上卷一个屏幕
M-     文件尾
C-u n 或 M-n   重复执行n次后继命令
Emacs中的删除C-d     删除光标上的字符
DEL     删除光标前的字符
M-d     删除光标后的单词
M-DEL   删除光标前的单词
C-k     从光标位置删除到行尾
C-S-Backspace  删除当前行
C-y     恢复删除最近的一个
M-y     循环恢复删除上一个
文本块操作C-@     标记文本块的开始
C-x C-x 互换插入点和文本标记的位置
M-h     标记整个段落
C-x C-p 标记整个页面
C-x h   标记整个缓冲区
查找与替换
简单查找替换C-s     向前递增查找
C-r     反向递增查找
C-s C-w 向前递增查找,把光标所在的单词作为查找对象
C-r C-w 反向递增查找,把光标所在的单词作为查找对象
replace-string  查找替换光标后所有的内容
M-%     查询替换操作
对于M-%,需要注意的是其相关的一些操作:
SPACE或y    用新字符串替换原来的,并进入下一个位置
DEL或n      不替换,进入下一个位置
.          在当前位置做替换后退出查询-替换操作
,          替换,并显示替换情况(再按空格或y进入下一个位置)
!          对后面的内容全部进行替换,不再提问
^          返回上一个替换了的位置
RETURN或q   退出查询替换操作
C-r        进入递归编辑状态
C-w        删除此处内容并进入递归编辑状态(好进行其他修改)
M-C-c      退出递归编辑状态,继续完成查询-替换操作
C-]        退出递归编辑状态和查询替换操作
正则表达式查找与替换C-M-s Return      向前查找正则表达式
C-M-r Return      反向查找正则表达式
C-M-s       向前递归查找正则表达式
C-M-r       反向递归查找正则表达式
query-replace-regexp  查询-替换正则表达式
replace-regexp    无条件替换正则表达式(慎用)
正则表达式中的字符:
^          匹配行首
$          匹配行尾
.          匹配任意单个字符
.*         匹配任意个字符
\         匹配单词的结尾
[]         匹配[]中的任何一个字符,如[a-z]匹配任何一个小写字母
Emacs中的register
在多个文件中逛的时候,我们常常需要快速切换到先前访问的某个位置。因此,我们需要把文件及其光标位置暂时存放在某个地方。
在Emacs中,我们可以使用register暂时性保存这些信息。
将当前光标所在位置保存入一个register中:
C-x r SPACE + register名(一个字符,比如a吧)
然后我们就可以到处瞎逛,若要回到保存的register a位置,我们可以输入:
C-x r j a
挺好用的吧:)
如果你记性和我一样不好,恐怕会常常想看看自己保存了哪些register,我们可以输入:
M-x view-register    查看某一个register
M-x list-registers   查看所有的register
其实我常用的就是以上功能,为了使笔记稍微完整一点,下面开始Copy 《GNU Emacs Manual》的相关章节:
在下面,我们使用r来命名所有的register:
Save Positions in RegistersC-x r SPC r
    Save position of point in register r (point-to-register).
C-x r j r
    Jump to the position saved in register r (jump-to-register).
Saving Text in RegistersC-x r s r
    Copy region into register r (copy-to-register).
C-x r i r
    Insert text from register r (insert-register).
M-x append-to-register RET r
    Append region to text in register r.
M-x prepend-to-register RET r
    Prepend region to text in register r.
Saving Rectangles in RegistersC-x r r r
    Copy the region-rectangle into register r (copy-rectangle-to-register). With numeric argument, delete it as well.
C-x r i r
    Insert the rectangle stored in register r (if it contains a rectangle) (insert-register).
Saving Window Configurations in RegistersC-x r w r
    Save the state of the selected frame's windows in register r (window-configuration-to-register).
C-x r f r
    Save the state of all frames, including all their windows, in register r (frame-configuration-to-register).
Keeping Numbers in RegistersC-u number C-x r n r
    Store number into register r (number-to-register).
C-u number C-x r + r
    Increment the number in register r by number (increment-register).
C-x r g r
    Insert the number from register r into the buffer.
使.emacs立即生效
M-x eval-current-buffer
Etags
建立Etags文件:在代码目录中运行etags -R
如果要向现有tags表中添加,则运行etags -a
访问Tag文件:
M-x visit-tags-table
常用热键M-. 访问tag C-u M-.访问下一个tag M-* 返回
Emacs 中的 GNU-Serv
常常使用console的人往往也改不了这么个习惯,就是进了X就开个终端,然后在里头埋头干活,看到什么文件想修改就vi一把。我也是这个习惯。vi比emacs启动快多了。
GNU-Serv改变了这个情形。
首先要安装gnu-serv这个包,在我的机器上apt-get install gnu-serv就可以了。
接下来修改.emacs文件
  (require 'gnuserv)
  (gnuserv-start)
接下来修改.bashrc文件
  alias e='gnuclient'
这样,在终端下就可以通过 e foo来编辑foo文件了,它会自动关联到已经打开的emacs中。
更强大的功能在于,你还可以在远程执行gnuclinet,在本机编辑文件后自动存放到远程机器上。
Emacs中的bookmark
将当前页面加入bookmark
  M-x bookmark-set
修改.bashrc,将list-bookmarks绑定到F9上
  (global-set-key [(f9)] 'list-bookmarks)
这样,就可以通过F9键访问书签了。
我常用的键绑定F2  寻找wiki
F3  进入dired模式
F4  进入eshell模式
F12 t   进入todo模式
F12 c   访问Calendar模式
F12 p   在当前页添加Planner
F12 g   查阅当天的plan
F12 r   添加笔记
F9  列出bookmarks
在Emacs 中添加Appointment
这个主要是添加约会和提醒用的,首先修改.emacs文件打开约会提醒功能。
(setq appt-issue-message t)
然后可以通过appt-add添加新的约会提醒,到时间Emacs就会弹出窗口提醒。如果这期间要取消约会,那么可以通过appt-delete删除。
Calendar和Diary
Calendar是配合Diary进行行程安排的,两者配合可以用于规划比较长远的事情。
我已经把Calendar模式绑定到了F8上,以下列举几个常用的命令:
.  跳回当天
o  跳到某一个月
g  这一系列命令表示goto,可以跳到指定的某一天。
   g d   跳到某年某月某日
   g c   跳到某年某星期的星期几
   g C   跳到阴历的某一天
p  这一系列命令表示print,例如p C显示显示当前的阴历日期
i  这一系列命令表示插入行程安排
   i d   加入当前这一天的行程安排,类似还有m w y
   i w   跳到某个星期的星期一,按下i w可以加入每个星期都必须做的事情
   i a   跳到某天,按下i a可以加入周年纪念日
好习惯应该是经常打开calendar,跳到某天,按下d就可以显示这一天的行程安排。
Emacs 中的 To-Do Mode
To-do可以用来做日程安排,todo,done,top分别表示要完成的事情,已完成的事情,和优先事情。
首先要修改.emacs文件
  (setq todo-file-do "~/.emacs.d/todo-do")
  (setq todo-file-done "~/.emacs.d/todo-done")
  (setq todo-file-top "~/.emacs.d/todo-top")
下面是一些快捷操作
i    加入一个条目
e    编辑条目
k    删除条目
+/-  在不同category之间切换
j    跳转到不同的category
f    对已完成的事情进行归档,并可以进行评论。
如果按i想把条目归入新档时出现错误,可以用todo-add-category加入
想要添加什么事情,随手就可以通过F5进入todo-mode,按寻找一个category,按I添加一个新的entry。完成之后再切换到todo去,按下d或者f删除entry。每个星期可以通过bookmark访问一下done文件,顿时觉得生活过得好充实。
todo部分转载自coda@newsmth。
用planner安排日程
这里有篇不错的入门文档




安装planner
在我的机器上只需要 apt-get install planner-el即可,非Debian的系统也不麻烦。
接下来要配置.emacs文件。
;;;planner
(require 'planner)
(global-set-key (kbd " p") 'planner-create-task-from-buffer)
(setq planner-publishing-directory "~/document/wiki/diary/plan")
;;;;Start planner together with Calendar
(planner-calendar-insinuate)
(setq planner-calendar-show-planner-files t)
常用快捷键查询任务
M-x plan      查询所有未完成的工作
M-x planner-goto-today        查询当天未完成的工作
添加任务         C-c C-t或者M-x planner-create-task-from-buffer
标记任务完成     C-c C-x或者M-x planner-update-task   
修改任务描述     M-x planner-edit-task-description
重新安排一个任务   C-c C-c
重新安排多个任务   区域选定后M-x planner-copy-or-move-task
Change a plan of task     M-x planner-replan-task
Delete a task             M-x planner-delete-task
Reordering task    M-p 升序  M-n 降序
修改优先级         C-M-p 提升;C-M-n 降低
以下是从info中复制过来的
Ideas for using planner more effectively:

  • Add `(plan)' to the end of your `~/.emacs' so that you are reminded about your tasks every day.
  • Bind useful functions to shortcut keys and get used to creating tasks and notes from anywhere.
  • Think about how you plan your day and look for ways to improve it. Ask the mailing list for tips.
  • Browse the rest of this manual, the source code, and other resources on the Net for tidbits you can use.
  • Have fun!

Useful functions outside planner buffers:

  • `planner-create-task-from-buffer'
  • `remember'
  • `planner-goto-today'
  • `planner-goto'
  • `plan'

Useful functions inside planner buffers:

  • `C-c C-t' (`planner-create-task-from-buffer')
  • `C-c C-x' (`planner-task-done')
  • `M-x planner-edit-task-description'
  • `C-c C-c' (`planner-copy-or-move-task'), `M-x planner-copy-or-move-region'
  • `M-x planner-replan-task'
  • `M-x planner-delete-task'
  • (`planner-raise-task') and (`planner-lower-task')
  • (`planner-raise-task-priority') and (`planner-lower-task-priority'),
  • `planner-replan-note'
  • `planner-update-note'



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63367/showart_1678426.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP