Emacs-hacking第一天

  几个月前开始入手emacs,由于在Mac下所有的快捷键都是全局的,在编辑任何文档的时候都可以使用,所以现在对于emacs下的快捷键已经很熟悉了,而且用emacs搭建了一个C++的小型IDE。使用的挺爽。

  寒假即将结束。。决定立下flag从今天开始,了解emacs的原理和细节问题,好在网上有很多教程,不打算写的太细,主要是为了自己能够复习一些比较容易忘记的package用法和emacs的基本操作。这一篇重点查缺补漏一些细节问题。以后的博文也会有一些补充。

  

  Starting!!

  

 

  1.关于快捷键 

   prefix key:指的是C-x,C-h, C-c等一些前置的比较常用的按键。这里需要区分一些关于快捷键分类的基本概念:“移动相关“和”基本编辑相关“,不管在那种编辑方式,基本编辑指的是删除,复制粘贴等的基础操作,不过我好像只是掌握了一些基本的移动过相关的快捷键,但是对基本编辑还很是模糊,上手几个月后这种感觉尤为明显,主要体现在emacs写了几百行代码,却由于不知道复制粘贴而只能在另一个OJ的编辑器中重新写一遍。。。

  

 1 在tutorial文档中有对deleting和killing操作的区分,感觉没什么用。主要是为了使用方便:
 2 
 3 
 4    a.发现一个好用的  C-Del向左删除一个单词  配合C-k C-d基本无敌   而以M做prefix的快捷键真心用不惯
 5 
 6 
 7    b.对于基础的剪贴复制操作
 8        C-Space+鼠标移动进行选中(Mark set),
10        C-w剪贴
11        C-y复制

    c.敢于查询建
C-h k 查询快捷键
C-h v 查询变量
C-h f 查询函数
C-h m 查询当前已经激活的Minor Mode
   查询窗口直接按”q“就可以退出。

 

  不过这里对于Mac用户有一种比较方便的直接在finder下查看文件的函数:(reveal-in-osx-finder);可以将当前buffer的文件直接在finder中打开,用法也相当简单—— #M-x  (reveal-in-osx-finder)#。这样就可以省掉很多直接去在目录下直接找文件并对其进行操作。

  

/*
     这里可以对这个函数绑定一个快捷键:
     在一般情况下,用户自主绑定的快捷键用的是:     C-c 
    因此可以:     
     (global-set-key (kbd "C-c C-f")   'reveal-in-osx-finder) 
*/

 

 

 

 

  2.关于elisp

   现在感觉还是以基本操作为主,所以也只是对lisp语言有一个基本的认识就可以。

  

/*

lisp是一门函数语言

(+ 2 2 )


(setq my-name "haotianmichael")   定义变量 myname  值为”haotianmichael“      还可以对一个已经存在的变量或函数定义一个值  一般是t(true)或者-1
(message my-name)  输出变量的值



(defun myfun()
          (message my-name)        定义函数
)
(myfun())  执行不带参数的函数


(defun myfun()
          (intercative)  这句话将该函数定义为交互式的函数,主要体现在可以用emacs中的M-x快捷键来直接调用该函数
          (message my-name)        定义函数
)



对函数进行快捷键的绑定
(global-set-key (kbd "<k1>")   'myfun)  快捷键为k1直接调用该函数


*/

  

  3. 关于minor mode和Major Mode

  这两个概念还是比较重要的:因为emacs是一个编辑器,所以主要是对文件进行编辑,当然就会遇到很多种不同类型的文件,比如.org .java  .c  .el等文件类型,每一种不同的语言,之所以不同就是因为不同的语言有鱼一样的语法规则,这是最基本的,除此之外还会有一些支持和快捷键的绑定,语法高亮等。这些不同在emacs下用Major Mode来进行区分。也就是说,在编辑一个文档的时候,emacs只能打开一种MajorMode(除非一个文件有多种格式当然不可能)。但是除此之外的一些细节上的修改,就叫做Minor Mode。比如说对编辑器外观的配置,对基本删除操作,补全操作的设置等。因此emacs在编辑一个文档的时候,却可以打开多个MinorMode。

  这里再多一句嘴:对于Mac下的功能键,需要同时按fn + fx才可以使用。

 

  4.关于内置的package系统

  再说一句废话:刚开始安装emacs的时候,在~/.emacs.d目录下是什么都没有的,但是当开始编辑文档,就会自动出现一个叫做auto-save-list的目录。在emacsWiKi中的解释为:By default, Emacs automatically saves your changes to a file intermittently. 先记下。以后会定时检查配置中多出来的目录文件,便于更好的理解emacs操作。内置的package系统可以直接在GUI中用Option——>manage emacs packages打开。打开的瞬间会在~/.emcas.d下出现一个elpa目录emacs lisp package archive。用来保存下载的packages。

  The1stPackage下载了补全company。在没有下载之前用C-h f搜不到关于company的介绍,但是在用package安装之后就可以搜到company-mode是一个Minormode,并且在modeline中可以看到显示了company(说明MIDELINE中即可以显示Majormode也可以显示Minormode,但也是对于minormode选择性的显示,先这样理解)。说明emacs真的是扩展性很强。

  

  5.关于orgmode

  不可思议的是,从一开始接触emacs就不知道如何使用orgmode,似乎非常戏剧化,因为传说这是emacs最有利的利器了。       

/*
1.通过加入不同的*来区分不同的headings

2.在*后一定要有一个空格

3.记住几个快捷键:
      C-tab  对整个文档在三种视图中切换(折叠;打开下一级;打开全部)
      tab     切换光标所在大纲中的三种视图状态
      M-RET   尽管特讨厌使用M键,但是先记住这几个。
    C-c C-t 将一个headings变成TODO事件

*/

 

 

   第二遍学习收获还是不少,对很多概念突然一下就清楚了,后续的博文主要还是希望自己能建立起hacking的整个主动过程,熟悉一些网站,从而更好的配置自己的C++环境。

 

  

posted @ 2018-02-05 10:37  HaotianMichael  阅读(211)  评论(0编辑  收藏  举报