久仰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
- ...
折腾不下去了,先撤了
网友评论