美文网首页
emacs基本操作与配置

emacs基本操作与配置

作者: ppphp | 来源:发表于2018-04-25 02:37 被阅读0次

    久仰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
    • ...

    折腾不下去了,先撤了

    相关文章

      网友评论

          本文标题:emacs基本操作与配置

          本文链接:https://www.haomeiwen.com/subject/aojljxtx.html