emacs基本操作与配置

久仰emacs大名,今天开始学习emacs。
看emacs-china维护的书也是很好的入门http://book.emacs-china.org/
因为公司不给实习生配vpn,所以需要在命令行下写代码,需要一个能自动分屏的类似ide的软件。你问为啥对实习生这么狠,因为穷啊,只能做这个了。。。(我现在知道为什么不配了,因为配了也不太能用。。。)我考虑过tmux,vim,emacs这三种常用的分屏方案,最终选择了emacs。tmux原因是快捷键切屏比较不方便,而且启动要重新配置一下大小。vim基于vimscript的拓展功能相对弱,如果没有这么严重的需求也不会把它作为缺点。emacs相对比较自由一点,相对的我也要承担自由给我带来的痛苦比如傻逼elisp。

我的需求主要有:

  • 漂亮的外观,这个最难,可以慢慢来
  • 一定功能的文件管理
  • 方便的命令行
  • git
  • 代码支持

gentoo用户千万千万要注意把自己emacs的USEFLAGS加上xft。血的教训!

简单操作emacs

打开emacs

emacs打开默认是图形界面,非常的傻逼。一个需要很多键盘操作的软件居然打开默认是图形界面,就跟吃了屎一样难受。所以用命令行打开

emacs -nw

会看到提示,其中提示里的C代表ctrl键,M代表alt键。用mac的找不到ctrl键的同学请自行购买相应的键盘并随身携带(其实就是cmd键)。所有命令都用这两个键,所以非常需要一个脚踏板。

关闭emacs

第一个要记住的命令是关闭emacs,是一个组合:C-x C-c

查看教程

查看教程可以用组合C-h t。暴躁老哥可以直接看tutorial,而且还比较系统。

新建文件

在emacs里新建文件可以是C-x C-f 然后加上文件名,当然也可以用命令行直接加上新文件的名字。

保存文件

C-x C-s

字符操作

这个没有vim一样的区分模式,直接打字就可以了。
emacs也就是个工具,用惯了就好了

撤回与暂停

C-/撤回
C-g停止,随时都可以用这个退出命令

配置emacs

现在开始配置emacs,目标让他能有一个类似于ide的界面:文件系统,编辑器,命令行,等等插件。

youtube上面也有一些教程可以看
https://www.youtube.com/watch?v=dJP-JDUWeQM
https://www.youtube.com/watch?v=FRu8SRWuUko

配置文件

与大部分软件一样,系统的配置文件在/etc下,个人使用的配置文件在~/.emacs底下(也可以是~/.emacs.d/init.el),我们现在只修改.emacs

elisp

lisp经常被一群装逼犯吹到天上去。确实scheme,common lisp,clojure各有各的好,但是这些好处elisp一个都没占上。没办法,忍吧。
lisp本身很简单,但是越简单的语言越难应对复杂工程,当然现在还不是说这个的时候。
lisp的语法是全在括号里的,按空格区分结构,第一个空格之前的是函数,比如最常用的赋值语句

(set 'me '(smart handsome)) ;;两个分号是注释

'符号有点像ruby里的:,定义了一个介于字符串和变量之间的东西(ruby喜欢用空格很大程度上也是借鉴自lisp)
上面这句可以用setq省一个'

(setq me '(smart handsome))

初学不会也无伤大雅,看例子就懂了,elisp还一堆API,本来一时半会也学不来。

配置主题

循序渐进,先解决最急迫最辣眼睛的需求,再解决装逼的需求。
emacs提供了很多主题,有一个网站https://emacsthemes.com/专门收集这些主题。
个人之前用的是atom和idea,所以安装darcula,atom-one-dark也备用(最后还是用了atom主题皮肤)

mkdir -p ~/.emacs.d/themes
cd $_
wget https://raw.githubusercontent.com/dracula/emacs/62df5de68c73d34faaa0191a92ce3ebce589bf24/dracula-theme.el 

~/.emacs.d/init.el中加入以下命令,应该是添加的第一个配置,可喜可贺

(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")                                                      
(load-theme 'dracula t)

通过melpa安装

http://melpa.org/是一个emacs的包仓库,我好像没用成这个,就算了,下面的命令是瞎敲的不一定对

(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))

m-x package-refresh-content
输入emacs命令
m-x package-install RET atom-one-dark-theme

修改字体

字体在非命令行才可以看到效果,不需要可以跳过。可以用m-x describe-font来查看字体,发现了m-x 相当于emacs控制台,还是很厉害的。
emacs可以分段显示字体,比如字符a-z显示一个字体,A-Z显示另一种,所以要告诉刚才那个函数你用的什么字符,用的什么字体。
在此之前我们先把字符集设成utf8

(set-language-environment "UTF-8")
(set-default-coding-systems 'utf-8-unix)

一般来说没有配置过都是No fonts being used,现在我们可以修改了。
emacs只能使用安装的字体,因为他在每个平台上的实现都有所不同。我也是研究了很久才发现不行的。参考https://stackoverflow.com/questions/496188/how-do-i-have-emacs-load-a-font-from-a-file
设置字体走了很多弯路,但是借鉴一下这篇文章稍微好一点。http://wap.yesky.com/www/439/2439.shtml我用的是x的窗口,首先我使用xlsfonts查看x已经安排上了哪些字体,然后xset -p查看路径,把缺少的字体路径全仍进去
首先在默认打开的文件里输入

(font-family-list)

然后C+j显示结果。别忘了跳到三个点那里回车查看所有结果
最后写入配置文件

(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-12"))

添加行号

(global-linum-mode t)

添加目录

使用neotree

(add-to-list 'load-path "~/.emacs.d/neotree")
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))

f8打开或关闭树形界面,这时候要想了,怎么才能一直显示树形目录结构不用关闭呢,使用C+x +o就可以了,注意要分开来按,否则会不一样。这个命令也是emacs里切换窗口的命令。
按?可以查看neotree的文档,要切换回原来的代码可以按C+x+向左,这也是切换buffer的命令。
buffer和窗口的区别是buffer是几个文档占一个位置,窗口是几个文档占不同的区域。

添加命令行

命令行的需求是能打开vim(斜眼),还有诸如htop这样使用ncurse的软件,ncurse就是命令行排版工具,很多软件都会用得到
emacs提供3种shell,shell,term,eshell。shell是emacs内置的标准shell,eshell是完全用elisp写的标准shell,term是用系统的shell。这三个都不完美。前两个对部分shell功能不能完美支持,term比较混乱。我用的term的改进版插件multi-shell。这玩意还是emacs大牛王勇写的。。。

(add-to-list 'load-path "~/.emacs.d/multi-term")
(require 'multi-term)
(setq multi-term-program "/bin/bash")

TODO:

  • 添加命令行
  • 添加语法高亮
  • 添加数据库
  • org-mode
  • ...

折腾不下去了,先撤了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容