zoukankan      html  css  js  c++  java
  • Emacshacking第一天

      几个月前开始入手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++环境。

      

  • 相关阅读:
    POJ 1981 Circle and Points (扫描线)
    UVA 1514 Piece it together (二分图匹配)
    CodeForces 140D New Year Contest
    HDU 4863 Centroid of a Tree
    HDU 4865 Peter's Hobby
    HDU 4870 Rating
    HDU 4864 Task
    CodeForces 766E Mahmoud and a xor trip
    CodeForces 766D Mahmoud and a Dictionary
    CodeForces 767D Cartons of milk
  • 原文地址:https://www.cnblogs.com/haotianmichael/p/8416236.html
Copyright © 2011-2022 走看看