Emacs的安装:

Mac上的Emac版本有: 
- Emacs for Mac OS X 
- Emacs for Mac OS X Modified 
- Emacs Mac Port 
- Aquatics

方法1:使用dmg安装

Download OS X emacs,拷贝到/Applications目录 
注意在终端运行emacs时很可能会运行OS X默认安装的emacs程序,/usr/bin/emacs,在~/.bash_profile中添加 
alias emacs="/Applications/Emacs.app/Contents/MacOS/Emacs" 
然后 source ~/.bash_profile 
来定位emacs命令到自己安装的emacs上

方法2:使用homebrew安装GNU Emacs:

brew install emacs --HEAD --use-git-head --with-cocoa --with-gnutls --with-rsvg --with-imagemagick
  • 1

默认安装目录为/usr/local/Cellar/emacs, 若想在Applications中启动,可以使用软连接的方式: 
ln -s /usr/local/Cellar/emacs/HEAD/Emacs.app /Applications/Emacs.app

Emacs的配置

Emacs的配置文件为~/.emacs, 而~/.emacs.d/目录则存放一些资源,如颜色脚本(姑且这么叫吧)。感觉像是~/.vimrc和~/.vim的关系

Emacs如何加载配置文件

Emacs的核心部分是一个emacs lisp解释器,emacs lisp是lisp的一种方言版本。对emacs进行配置,其实就是lisp解释器对emacs lisp配置文件进行解释。而我们对emacs进行配置其实就是书写emacs lisp配置文件。所有的emacs配置文件都以.el为后缀(emacs lisp简写).emacs在“/home/你的用户名/”下有一个统一的配置文件.emacs,一般用于放置一些基本的配置内容和对其他配置文件的路径引用。 
那么Emacs会从哪些路径加载.el配置文件呢? 
默认搜索路径:~/.emacs, ~/.emacs.el, ~/.emacs.d/init.el 
另一个比较重要的就是load-path指定的搜索目录。可以通过如下两种方式查看load-path的当前值 
方式1:

    C-h v load-path RET
  • 1

C-h是Emacs的帮助选项 
方式2: 
在Emacs的*scratch*缓冲区中输入(print load-path), 然后将光标移动到右括号处,使用快捷键C-j (M-x eval-print-last-seep)来执行这条语句。

Emacs从load-path指定的目录加载default.el配置文件。 
通过load可以从load-path指定的目录中加载指定.el文件,例如: 
(load 'auctex.el' nil t t) 
注意’auctex.el’必须在load-path所指定的目录中。 
那么如何将目录添加到load-path搜索路径中呢? 
(add-to-list 'load-path "your_path")

添加搜索路径后需要包含文件才能在emacs启动时加载 
例如包含xxx.el文件,可以(require 'xxx)或者(load "xxx.el")

emacs配置文件的书写和组织

编写emacs配置文件就是编写emacs lisp文件,语法遵循lisp语法 
而通常大多数配置选项为 
(emacs变量 emacs样式) 
如这种形式 (emacs variable emacs face) 
常见的emacs variable有set-background-color,set-foreground-color,column-number-mode 等等,他们都代表特定的emacs属性样式,后面的是设定的值。例如: 

(global-linum-mode ‘linux-mode) ;;auto show row-num

(partial-completion-mode 1) ;;use partial-completion

(icomplete-mode 1) ;;use complete-completion

(display-time-mode 1);;

其中;;为注释符号,也可以用’来注释。 
所有的emacs配置文件中,只有.emacs不以.el为后缀,但它也是被以emacs lisp文件来解释的。可以把各种功能的配置写成独立的el文件,然后在其他文件中相互包含,最后在.emacs配置文件中包含这些el文件。即若在a.el中包含b.el,只需在.emacs中包含a.el即可,与c语言中include一样 
按照一般的习惯,.emacs文件中一般不会放太多的设置信息,一般放一些emacs的搜索路径的信息。

Emac配色方案

  1. 下载color-theme.el并拷贝到~/.emacs.d/themes/目录下,如果该目录不存在手动创建。
  2. 打开~/.emacs文件,写入 :
(add-to-list 'load-path "~/.emacs.d/themes/")
(require 'color-theme)
  • 1
  • 2

然后保存,保存。 
3. M-x eval-buffer使配置生效后,可以执行插件提供的命令:M-x color-theme-select RET进入配色方案选择界面。选好之后,你可能希望将配色方案设成默认,还是修改配置文件。在配色方案选择界面中选择主题后按d,会出现该配置的提示信息,比如:

color-theme-classic is an interactive Lisp function in
'color-theme-library.el'.
(color-theme-classic)
Color theme by Frederic Giroud, created 2001-01-18.
AntiqueWhite on darkslategrey scheme.  Based on Gnome 2, with my favorit
color foreground-color and fontlock color.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

将类似(color-theme-classic)的内容添加到.emacs中,就可以每次启动Emacs时自动选择配色方案了。

Emacs的使用

Emacs并没有独立的控制模式和编辑模式(vim 两个模式是独立的),通过控制键来区分控制模式和编辑模式,常见的控制键为Ctrl(C), Shift(S)和Meta(M),Meta键一般是Alt。 
Emacs中的组合键其实都对应了Emacs的函数,可以通过M-x来调用函数,例如C-n就是对next-line的调用。C-x C-c就是对kill-emacs的调用。

Emac的光标移动

导航

 
p-previous, n-nextline, b-backword, f-forward

中级导航:

  • M-f:向前移动一个单词,相当于vim中的e或者w
  • M-b:向后移动一个单词,相当于vim中的b
  • C-a:移到行首,相当于vim中的^
  • C-e:移到行尾,相当于vim中的$
  • M-<:移动到文档首,相当于vim中的gg。注意这里要按Alt+Shift+<
  • M->:移动到文档尾,相当于vim中的Shift+g 

高级导航

M-g M-g [n]:按两次M-g然后输入行号,相当于vim中的[n]gg。 那么如何显示全部的行号呢?M-x 然后输入linum-mode命令,相当于vim中的:set nu 
总结:

按键 命令 作用
C-f foward-char 向前移动一个字符
C-b backward-char 向后移动一个字符
C-p previous-line 向上移动一行
C-n next-line 向下移动一行
M-f foward-word 向前移动一个单词
M-b backward-wor 向后移动一个单词
C-a beginning-of-line 移到行首
C-e end-of-line 移到行尾
M-a forward-sentence 移到句首
M-e backward-sentence 移到句尾
C-v scroll-up 上移一屏
M-v scroll-down 下移一屏
M-< beginning-of-buffer 移到文档头
M-> end-of-buffer 移到文档尾
M-g g n goto-line 移到第几行
C-l recenter 找到光标,同时将光标置于屏中

文本编辑

文件操作

多窗口操作

emacs的一个强大之处体现在它的多窗口操作,多窗口有如下典型的用处: 
1. 在两个子窗口中对比文件的内容 
2. 对某个窗口感兴趣,最大化该窗口 
3. 打开更多的窗口以参考其他信息,如帮助文档等

将子窗口按照0..9编号,然后通过M-0..9访问(常用)

安装window-numbering.el, 然后编辑~/.emacs文件

(require 'window-numbering)
(window-numbering-mode 1)
  • 1
  • 2

在编辑emacs配置文件时,经常很难区分变量和函数,这正是lisp code as data的体现

焦点移动到下一个窗口(常用)

M-x other-window, 快捷键为C-x o注意不要三个同时按,(按完C-x之后再按o)

水平垂直切分窗口

C-x 2/3

将当前子窗口最大化

C-x 1(也就是删除其他窗口 delete-other-windows)

上下左右切换窗口

使用C-x o切换窗口当窗口多了的时候比较麻烦,有没有想vim的C-h h/j/k/l的快捷键呢? 
使用emacs预安装的windmove.el 
在~/.emacs中加入 
(windmove-default-keybindings) 默认绑定是S left/right/up/down(其中S是shift)

绑定快捷键

以之前多窗口配置的例子作为示例  
(global-set-key (kbd "C-x 4 u") 'winner-do) 
lisp中通过'引用el中定义的函数或者变量 
(kbd KEYS) convert KEYS to the internal Emacs key representation. KEYS should be a string constant in the format used for saving keyboard macros 这是C-h ? f kbd打印出的帮助信息 
(global-set-key KEYS COMMAND) 设置KEYS到函数

帮助信息

授之以渔不如授之以鱼,最重要的不是记住了多少快捷键,多少函数,多少变量,重要的是如何去查看帮助。 
Emacs的帮助通过C-h来调出。C-h之后会输入?选择想要查看的具体项,比如v查看variables, f查看functions, k查看快捷键等 
也可以先输入某个组合键,然后输入C-h查看它的帮助信息,比如 
C-x C-h可以查看所有与C-x相关的快捷键 
比如C-x o切换窗口 
C-x 0关闭当前窗口 
C-x 1关闭其他窗口等 
C-x 2 垂直切分窗口 
C-x 3 水平切分窗口 

常用emacs技巧

在eshell模式下使用C-l清屏

(defun eshell-clear-screen ()"clear screen"(interactive)(let ((inhibit-read-only t))(erase-buffer)(eshell-send-input)))
(add-hook 'eshell-mode-hook'(lambda ()(local-set-key (kbd "C-l") 'eshell-clear-screen)))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在eshell下直接调用erase-buffer命令会得到read-only的提示,所以通过inhibit-read-only设置为t来更改read-only的属性

Emacs中如何将文本拷贝到外部

1.首先是标记要拷贝的区域(region) 
1. C-x h全选,即mark-whole-buffer 
2. 标记指定区域,这个涉及的内容还挺多的 
- 任意区域标记:C-@设置标记的开始,然后光标所走过的区域都将被标记 
- 快速标记: 
- C-x h标记全部,相当于Ctrl-a 
- M-@选择一个单词 
- 按住shift之后,C-n和C-p标记整行

  1. C-w, 即kill-region, kill所选中的buffer,即剪切的意思 
    别忘了C-y一下 
    此时就可以将内容拷贝到其他地方了

Mac上使用Emacs相关推荐

  1. emacs python plugin_Windows上配置Emacs来开发Python及用Python扩展Emacs

    Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候,喜欢跟大众唱反调的我,突然觉得如果能用Emacs来编代码, ...

  2. Mac上android emulator模拟器使用(三十一)

    Mac上android emulator模拟器使用 0.首先在eclipse或者android studio创建android模拟器注意:选择armv7或armv8都可以,模拟器版本建议选择比较新的1 ...

  3. 在Mac上设置环境变量并永久生效的方法

    原由 我使用Go来开发程序,安装govendor之后发现命令行中执行govendor无效,需要将govendor所在的路径添加到PATH环境变量中.我的软件环境是iTerm2+zsh. Mac中的环境 ...

  4. 在Mac上控制Alt Delete-如何在Macbook上打开任务管理器

    It happens to the best of us: we're working away on some important project, and our trusty computer ...

  5. 适用于Mac上的SQL Server

    适用于Mac上的SQL Server? 众所周知,很多人都在电脑上安装了SQL Server软件,普通用户直接去官网下载安装即可,Mac用户则该如何在Mac电脑上安装SQL Server呢?想要一款适 ...

  6. mac上使用crontab周期性执行python脚本

    这个月买了本书<Linux系统命令及Shell脚本实践指南>, 看到了一个周期性执行任务cron.顿时产生一个想法: mac上有这种机制么? 加上自己也在15年下半年也学了点python脚 ...

  7. 在Mac上使用Nginx和FastCGI部署Flask应用

    最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验. 应用 这里使用的应用就是官方的文档中给出的Flaskr. 安装Nginx ...

  8. swt能单独在linux运行么,java – 在Mac上运行基于SWT的跨平台jar

    我一直在开发一个基于SWT的项目,该项目旨在部署为Java Web Start,从而在多个平台上使用. 到目前为止,我已经设法解决了SWT所依赖的特定于系统的图书馆出现的出口问题(见相关的thread ...

  9. 推荐7款Mac上能极大提高效率的软件,建议收藏!

    给大家分享7款Mac端鲜为人知但是能极大提高效率的软件,个个都非常强大,直接上干货!喜欢的话记得点赞支持哦~ 1.simplemind simplemind是一款跨平台思维导图工具,可以帮助思考.收集 ...

最新文章

  1. SQL存储过程解密研究
  2. MYSQL中TIMESTAMP类型的默认值
  3. Linux进程间通信分类 以及 pipe的原理实现
  4. 泽西岛2.9及更高版本中的声明式链接
  5. ftp 传输速度_ftp上传工具下载,8款优秀的ftp上传工具下载软件
  6. 2008Beta 版AJAX的一个奇怪的问题
  7. 【POJ - 1275】Cashier Employment(差分约束,建图)
  8. nodejs对文件进行分页
  9. vscode 插件导出_VScode插件推荐
  10. 使用计算机传真,使用计算机发送和接收传真
  11. ant design table样式修改合集
  12. ROS NOETIC 思岚激光雷达A2M8启动历程
  13. 电脑自动关机后文件丢失,如何恢复
  14. Android拍照失败以及成功后拿不到照片(照片裁剪加载失败)原因之一
  15. Android:高德定位及搜索周边地址
  16. bootrom的构成
  17. 《C语言程序设计(第五版)》习题答案
  18. 2022 大一大二基础hive考试题
  19. sql盲注二分法注入脚本
  20. Redis Geohash指令与位置服务应用

热门文章

  1. 电子电路学习笔记(11)——滤波电容
  2. 手机如何看python代码_用手机运行Python代码
  3. tensorflow的regress(超详细教程)
  4. 1985:【19CSPJ普及组】加工零件
  5. 说说Android应用的persistent属性
  6. 解决MySQL CPU占用100%的经验总结 转
  7. Python数学建模—线性规划
  8. 编写模板类时注意一点 2007-12-06 11:22
  9. .net 网站接入支付宝扫码支付
  10. 【EmailCamel 国外邮件营销、美国邮件群发】邮件到达收件箱系列文章05:免费公共邮箱作为发件人的限制