不想再说废话了,既然你会阅读这篇文档,说明你多少对Emacs有些兴趣,或者已 经非常熟悉Emacs的基础操作了,并且希望有所提高。因此我不需要再把'编辑器 之神,还是神的编辑器'之类的恶俗话语放出来,来吸引你的好奇心。下面的内容, 从最基础的快捷键操作开始,一直到让你生活在Emacs中。这中间没有跳跃,你只 需要跟着我做,就可以了。
注意 该文档就是用Org生成的,我会把.org源码和html文档一块打包。关于 什么是Org,怎么生成,且看后面的讲解 2 Emacs 基础操作
2.1 基本文件操作
下面这些主要涉及了文件的基本操作,包括打开,新建,保存,另存为以及退出等比较常用的命令。
2.2 光标移动
这里边最方便的就是句首句尾和行首行尾,因为我的是笔记本键盘,上下左右主 要是用方向键,如果要是标准键盘的话,最好常用绑定键。
2.3 文本编辑
这里面包括了复制粘贴剪切删除等常用的操作命令。注意,在这里,移除包括了 剪切和删除两个概念,要区分清楚。
2.4 一些重要的命令
2.5 搜索
2.6 窗口命令
窗口命令比较常用,尤其是编辑多个文件的时候,你可以打开多个窗口,可以提 高编辑效率。
2.7 帮助
3 Emacs 基础定制
每一次emacs启动的时候,它将加载一个名为~/.emacs的Lisp代码文件,对该文件 进行编辑是一种常用的定制emacs的方式。
下面是一个典型的Lisp语句:
(setq column-number-mode t) (setqline-number-mode t) 它的意思是在minibuffer上栏显示行列号。其中,括号表示这是一个lisp函数调 用,圆括号内第一个符号setq为emacs配置文件中常用的的函数,它为某个全局变 量赋值。该函数第一个参数为要设置的变量名,第二个数则是该变量的值。
下面讲到的每一行代码,你都可以直接拿到~/.emacs中使用。当你想要了解某一 行代码的作用时,可以把它复制粘贴到~/.emacs中,保存然后重启emacs就可以看 到效果了。
小技巧 当你编辑~/.emacs配置文件的时候,每一次要看到效果都必须重新 启动emacs,非常麻烦。你可以用emacs打开.emacs文件并加入你想 要的lisp代码后,使用C-x C-s保存,接着在minibuffer输入:M-x eval-buffer,它会立即生效。你可以试验一下,非常方便和简单。 3.1 设置启动界面
每一条上面都有注释,我就不多说了。
;; 设置标题栏,我的设置为Welcome to Emacs world! (setq frame-title-format 'Welcome to Emacs world! ') ;; 禁用菜单栏,F10 开启关闭菜单 (menu-bar-mode nil) ;; 取消工具栏 (tool-bar-mode nil) ;; 取消滚动栏 (set-scroll-bar-mode nil) ;; 显示行列号,它显示在minibuffer上面那个杠上 (setq column-number-mode t) (setq line-number-mode t) ;;关闭emacs启动时的画面 (setq inhibit-startup-message t) ;;关闭gnus启动时的画面 (setq gnus-inhibit-startup-message t) ;; 设置启动时窗口的长宽,下面为80*40 (setq initial-frame-alist '((width . 80) (height . 40))) ;;关闭出错时的提示声 (setq visible-bell t) 3.2 操作习惯 ;;设置打开文件的缺省路径,这里为桌面,默认的路径为“~/” (setq default-directory '~/桌面') ;;让 Emacs 可以直接打开和显示图片。 (setq auto-image-file-mode t) ;;防止页面滚动时跳动, ;;scroll-margin 3 可以在靠近屏幕边沿3行时就开始滚动 ;;scroll-step 1 设置为每次翻滚一行,可以使页面更连续 (setq scroll-step 1 scroll-margin 3 scroll-conservatively 10000) ;; 当光标在行尾上下移动的时候,始终保持在行尾。 (setq track-eol t) 3.3 时间设置 ;; 启用时间显示设置,在minibuffer上面的那个杠上 (display-time-mode t) ;; 使用24小时制 (setq display-time-24hr-format t) 3.4 绑定键设置 ;; 把C-j绑定到到达指定行上 (global-set-key (kbd 'C-j') 'goto-line) ;; 设置C->键作为窗口之间的切换,默认的是C-x-o,比较麻烦 (global-set-key (kbd 'C->') 'other-window) ;; 改变Emacs要你回答yes的行为,按y或空格键表示yes,n表示no。 (fset 'yes-or-no-p 'y-or-n-p) ;;设置C-/为undo,M-/为set-mark (global-set-key (kbd 'C-/') 'undo) ;;设置M-/作为标志位,默认C-@来setmark,C-@不太好用 ;;M-/本来对应zap-to-char,这里占用了 (global-set-key (kbd 'M-/') 'set-mark-command) ;; 扩大或者缩小窗口(上下),Ctrl+{} (global-set-key (kbd 'C-}') 'enlarge-window) (global-set-key (kbd 'C-{') 'shrink-window) 3.5 全屏或最大化 3.5.1 全屏设置 (global-set-key [f11] 'my-fullscreen) (defun my-fullscreen () (interactive) (x-send-client-message nil 0 nil '_NET_WM_STATE' 32 '(2 '_NET_WM_STATE_FULLSCREEN' 0)) ) 3.5.2 最大化设置 (global-set-key [f12] 'my-maximized) (defun my-maximized () (interactive) (x-send-client-message nil 0 nil '_NET_WM_STATE' 32 '(2 '_NET_WM_STATE_MAXIMIZED_HORZ' 0)) (x-send-client-message nil 0 nil '_NET_WM_STATE' 32 '(2 '_NET_WM_STATE_MAXIMIZED_VERT' 0)) ) 4 Emacs 高级定制
这里所说的高级定制,基本上都属于比较重要的日常应用,比如说主题,w3m浏览 器,Irc,日程管理Org,版本控制Git,代码浏览Cscope。而像那些查看pdf,听 音乐以及煮咖啡的玩意,基本上是华而不实的东西,你要有兴趣,完全可以自己 去做,记住,Emacs提供无限可能。
4.1 开始前的一点说明
Emacs的插件一般都是一个以el为后缀名的文件, 把这个文件下载下来后放到一个 目录, 比如~/.emacs.d/, 然后执行下面这两条语句:
(add-to-list 'load-path '~/.emacs.d/') (require 'pluginname) 这样该插件就安装好了。
4.2 Emacs Theme
其实主题非常重要,因为字体的颜色,背景光标等等都是你天天必须面对的,设 定一个合适的主题,就像一个舒服的狗窝,让你不愿意离开。
下面是我的Emacs主题截图:
4.2.1 下载emacs theme压缩包 4.2.2 解压 4.2.3 复制相应文件到.emacs.d/下 cp -r themes color-theme.el ~/.emacs.d/ 4.2.4 在~/.emacs加上如下代码 ;;将~/.emacs.d/添加到加载路径 (add-to-list 'load-path '~/.emacs.d/') (require 'color-theme) (color-theme-initialize) ;; 这个是你选择的主题,后面的calm forest就是它的名字,注意使用小写。 (color-theme-calm-forest) 技巧 打开Emacs后可以 M+X color-theme-select 选择你喜欢的主题,然后 将相应的名称写入.emacs中。 4.3 Emacs Irc
这个在Emacs23之后已经自带了,只需要在~/.emacs中加入下面的代码即可使用。
(require 'erc) ;; 将F9设置为打开Erc的快捷键 (global-set-key [f9] 'erc) 4.4 Emacs Org>D
虽然Emacs23自带了Org-mode,但是如果方便地需要使用它,必须做相应的配置才 行。而关于Emacs org是什么,到底有什么用,这里不解释,如果你想了解,可以 在网上搜索,或者进入我的博客找到关于Emacs org 和 GTD 的文章。
好了,在这之前,我还是放一张我打开Emacs的截图
4.4.1 快速启动remember-mode ;; Ctrl-c-c 快速启动remember (global-set-key '\C-cc' 'remember) 4.4.2 快速打开inbox ;; 快速打开inbox (defun gtd() (interactive) (find-file '~/GTD/inbox.org')) (global-set-key '\C-cz' 'gtd) 4.4.3 为生成的html着色
正常生成的html白白黑黑的,没有第三种颜色,对一般人来说比较枯燥。如果你 需要插入lisp/shell代码,五颜六色的比较赏心悦目,当然我不太喜欢它生成的 html,也没有使用。
4.4.4 设置GTD收集项目的模板 ;; GTD 收集项目的模板设置 (org-remember-insinuate) (setq org-directory '~/GTD/') (setq org-remember-templates '( ('Task' ?t '** TODO %? %T\n %i\n %a' '~/GTD/inbox.org' 'Tasks') ('Book' ?b '** %? %t\n %i\n %a' '~/GTD/inbox.org' 'Book') ('CUBlog' ?c '** %? %t\n %i\n %a' '~/GTD/inbox.org' 'CUBlog') ('Project' ?p '** %? %t\n %i\n %a' '~/GTD/inbox.org' 'Project') ('GitHub' ?g '** %? %t\n %i\n %a' '~/GTD/inbox.org' 'GitHub') ('Log' ?l '** %? %T\n %i\n %a' '~/GTD/log.org' ) )) (setq org-default-notes-file (concat org-directory '/inbox.org')) 4.4.5 设置TODO关键字 ;;设置TODO关键字 (setq org-todo-keywords (list 'TODO(t)' '|' 'CANCELED(c)' 'DONE(d)')) 4.4.6 设置快捷键启动日程表 ;; 快速启动 agenda-view (define-key global-map '\C-ca' 'org-agenda-list) (define-key global-map '\C-ct' 'org-todo-list) (define-key global-map '\C-cm' 'org-agenda-month-view) 4.4.7 打开Emacs显示日程表
日程表这个东西就是需要不时的看一下,不然单单把它记录起来很容易遗忘,所 以我就把它放在启动的时候。每天,开机,打开Emacs,查看今天的日程表,然后 做相应的工作,多好~
;; 自动显示日程表 (setq org-agenda-files (list '~/GTD/inbox.org')) (org-agenda-list t ) ;; 关闭其它窗口 (delete-other-windows) 4.4.8 转接
如果你不知道org或者GTD为何物,可能有些云里雾里的。转接的目的,就是方便 在文件内或者文件之间,互换某些内容。比如,我在inbox里完成了某个 TODO ,然后将其标志成 DONE ,接着需要将这部分内容放到finished里面。如果按 照正常的流程,肯定是先剪切然后复制。由于每天的可能标记完成的任务比较多, 如果都剪切复制,这样的效率太低了,转接就是专门为了提高这个而来的。
;; 将项目转接在各文件之间,方便清理和回顾。 (custom-set-variables '(org-refile-targets (quote (('inbox.org' :level . 1)('canceled.org' :level . 1) ('finished.org':level . 1)) ))) 4.5 Emacs W3m 4.5.1 安装必需的依赖文件 首先在你的系统里查询是否有下列文件包。
cvs autoconf libgc-dev libncurses5-dev
查询的方法很简单,例如在终端输入:
dpkg -l 'cvs' 它就会自动查看是否已经安装cvs,如果没有,你需要使用下面的指令安装:
sudo apt-get install cvs 上面的几个都可以使用这种方法来确定是否有该安装包。
4.5.2 安装w3m
4.5.3 安装Emacs-w3m 这个貌似只能用源代码安装了~
首先:仍旧是回到主目录:
cd 其次,使用cvs下载安装包(这一步和w3m安装差不多)
cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login 要你输入密码,直接回车。接着输入下面的命令:
cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m 这一步需要下载安装包,需要一段时间,当下载完毕的时候,进入emacs-w3m:
cd emacs-w3m 然后:安装emacs-w3m
autoconf ./configure sudo make sudo make install 这些步骤下来不出现问题就表明emacs-w3m安装成功。
4.5.4 编辑Emacs-w3m的lisp代码 这是我的~/.emacs中关于Emacs-w3m部分。 (add-to-list 'load-path '~/emacs-w3m/') (require 'w3m-load) (require 'mime-w3m) ;; 设置w3m主页 (setq w3m-home-page file:///home/hic/audio/Home.html) ;; 设置快捷键 (global-set-key [f5] 'w3m) ;; 默认显示图片 (setq w3m-default-display-inline-images t) (setq w3m-default-toggle-inline-images t) ;; 使用cookies (setq w3m-use-cookies t) ;;设定w3m运行的参数,分别为使用cookie和使用框架 (setq w3m-command-arguments '('-cookie' '-F')) ;; 使用w3m作为默认浏览器 (setq browse-url-browser-function 'w3m-browse-url) (setq w3m-view-this-url-new-session-in-background t) ;;显示图标 (setq w3m-show-graphic-icons-in-header-line t) (setq w3m-show-graphic-icons-in-mode-line t) (defun remove-w3m-output-garbages () '去掉w3m输出的垃圾.' (interactive) (let ((buffer-read-only)) (setf (point) (point-min)) (while (re-search-forward '[\200-\240]' nil t) (replace-match ' ')) (set-buffer-multibyte t)) (set-buffer-modified-p nil)) 4.5.5 一些小问题
由于w3m-el和emacs23并不能充分匹配,有的时候会出现中文乱码问题。这个时候 你需要卸载w3m-el包,同时安装w3m-el-snapshot包。命令如下:
sudo apt-get remove w3m-el sudo apt-get install w3m-el-snapshot 4.6 Emacs Git
在Emacs上使用git的选择比较多,有Emacs VC git.el git-emacs magit等等,我 使用的是git-emacs。我已经默认你安装了git。
同样,我还是先放上一张git-emacs的截图:
4.6.1 下载安装包 git clone https://github.com/tsgates/git-emacs.git 其实https那个是git-emacs在github上的托管地址,有兴趣可以进去看一看。
4.6.2 配置.emacs (add-to-list 'load-path '~/.emacs.d/git-emacs/') (require 'git-emacs) 4.7 Emacs Cscope 4.7.1 安装Cscope
4.7.2 编译安装 仍然是老三步: ./configure make sudo make install Cscope 的发行包里面有个 xcscope.el 能很好地用于XEmacs 。它处于源代 码包的 contrib/xcscope 目录下,请将xcospe放入.emcs.d/中。
4.7.3 配置 (require 'xcscope) ;; 设置仅在打开c/c++文件时打开 (add-hook 'c-mode-common-hook '(lambda() (require 'xcscope))) 4.7.4 使用
如果需要使用cscope,请将cscope-indexer放入该目录,同时执行M+X cscope-index-files,即可在该目录下生成索引文件。同时将cscope-indexer放 入/usr/bin中,设置为可执行,在该目录下执行 sudo cscope-indexer -r,它会 生成cscope.files和cscope.out两个文件或目录。 |
|
来自: yusihai719 > 《emacs》