emacs 学习成长记:(org 文档)
* 1. emacs的删除 kill-ring
  常规删除我们都知道了,C-d, M-d,C-k 现在再说说另外增强的删除操作
  M-\              ;delete horizontal space
  M-SPC              ;just one space,ubuntu下该键被菜单拦截,可用ESC-SPC代替
  C-X C-o              ;delete blank line
  需要注意的是,C-o 是打开一个新行的意思, C-X o却可能绑定的是跳转到其它窗口,不要混淆.
  对于那些无用的白空格,emacs还有更高级的手段, whitespace mode, 对于那些无用的尾部空格,
  可以一条命令删除: M-x delete-trailing-whitespace
  1.1 剪切也很强,M-d 是剪切不是删除,那些花哨的功能就不说了, 把它们归结到选定区域再删除就可以了,强调两条方便的命令.
  C-S-<BACK> 相当于vim 的dd                                   // 为什么和vim 象比拟,我就感到特别亲切呢.
  M-z Char  相当与vim df
  1.2 块操作对应于emacs 矩形操作, 掌握常用的C-x r (k,y M-w)就可以了,其它不常用.
  kill 有一个kill-ring , 查看可用C-h v kill-ring
* 2. 跳转历史: mark-ring, global-mark-ring
  窗口显示的内容免不了跳来跳去,因为我们所关心的内容变了, 这就需要有一个跳转记录.
  能方便的前进,后退.
  emacs 对每一个缓冲保留一个跳转ring,C-SPC C-SPC 压进一个mark(前一个C-SPC设置mark,后一个C-SPC解除mark,很多操作都会影响mark.
  C-u C-SPC 会弹出mark并将光标移动到mark. 刚才的point进入mark-ring
  只有回跳,没有前行,默认最多16个,有点不太方便,可用插件进行功能扩展.
  查看: C-h v mark-ring
  C-x C-SPC 会操作global-mark-ring
  如果想跳转到固定位置,你需要位置寄存器.
* 3. 对状态行(mode line)的研究,阅读emacs-manual, 搞清行号,列号显示.
  是的,在菜单->options->show/hide->有line-number, column-number 选项,
  但是对应 emacs 的命令是什么呢? 本来一般编辑器菜单里实现就到头了,但这是emacs.可进一步.
  原来它执行的是下面的命令:line-number-mode,column-number-mode,还可以简化为linum-mode
  U:--- 含义: U大概是unicode 编码的意思,--表示文件和缓冲内容一致.**表示不一致.
  %% 表示文件是只读的. 执行快捷键C-x C-q 就能完成read-only-mode 模式转换.
  %* 提示你,文件已经变成只读的了,但是缓冲和文件不同步,需要保存文件才能同步.

* 4. minibuffer. command-history 变量
  它就是一个小缓冲,专门用来记录命令历史, 命令历史可以通过C-h v command-history 来查看.小缓冲是一个接口,实际执行的是lisp 命令,用M-p,M-n来追溯历史命令.
  minibuffer中有C-x ESC ESC 重复复杂命令,C-x z 重复最后命令,慢慢体会.

* 5. emacs 中的寄存器及使用
  寄存器就是用来存放东西的,对应一个变量,或者说对应一块内存
  就远不是cut-copy-paste 那么简单了.不过道理还是一样.
  emacs 功能强大,首先也再于它的寄存器功能强大.相较vim的寄存器,它又有新特征.
  位置寄存器,文本寄存器,矩形寄存器,配置寄存器,数字寄存器,文件寄存器,键盘宏寄存器.
  vim 中寄存器主要是位置和文本寄存器,没有区分那么细也运行很好,emacs 又有哪些说法?
  位置寄存器
  vim        emacs
  mR        C-x r <SPC> R        ;标记
  'R        C-x r j        R        ;跳转
  显示出vim 简洁, emacs 有后劲
  文本寄存器
  vim        emacs
  "Ry   (yank)    C-x r s R        ;save
  "Rp   (paste)    C-x r i R        ;insert
  矩形寄存器
  C-x r r R
  ;这个命令表示是copy进矩形区域,而vim 则用矩形选择来对应
  至于配置寄存器, emacs 可以保留一个窗口的状态,而vim 用session 来保留,
  emacs 有数字寄存器,存数并可实现加减, vim 用寄存器也可实现数字加减.
  文件名寄存器是把文件名放入寄存器中, 方便使用, 目前还没有用到.
  键盘宏寄存器, 其内容存放的是键盘操作过程. 到记录宏使用宏时在介绍.
 
  bookmarks.
  为emacs 特有,以文件的方式(持久性)记录文件位置.
  C-x r m <RET>        ;默认名称
  C-x r m BOOKMARK <RET>    ;带名称
  C-x r b BOOKMARK <RET>  ;branch, 由于j被用作跳转到寄存器,所以跳转到bookmark改用b
  C-x r l         ;列出bookmark
  那么系统剪切板与emacs 寄存器如何对应呢? 实验知:
  往系统剪切板copy点东西,在kill-ring 中是看不见的,但C-y却能yank 进来
  M-w C-w 内容不仅进入kill-ring,也进入系统剪贴板.
  上面的叙述,还停留在emacs 基本操作及概念上. emacs 要想出山,除了要熟练基本操作外,
  多文件的处理必需过关,
 
  修改bug 从搜索开始.
* 6. 查找与替换
** 6.1 最简单的查找是C-s, C-r
   当出现搜索提示符时:
   C-w (isearch-yank-word-or-char)可把当前点单词或字符放上
   M-s . 搜索光标下字符
   
   查找正则表达式C-M-s, C-M-r
   正则表达式注意反斜杠\的转意作用及一些特殊的转意.
   
** 6.2 常用的两个搜索命令及客户化代码
1. M-x occur    ;在一个文件中搜索匹配行
2. rgrep 命令. 在一个目录下对某类文件进行递归查找 , 常用!
grep 有没有查看上一次的grep 结果,相当于vim 的colder?
因为我经常找来找去, 不能每次都找. 需要保存上次查找结果.
当我把emacs 的查找结果缓冲区试图改名, 以便能保留第一次结果,进行第二次查找时,
才进一步理解了这个无文件对于的特殊缓冲区到底是什么意思,我可以把它另存为一个文件,
用vim打开, 这样它的神秘性才彻底消失.
后来发现一个grep-a-lot 插件,很好用,可满足要求.
emacs grep 可以比美vim 的grepit 插件, 这样emacs 就可以应对项目查找了.

** 6.3 find-name-dired 命令 . 可以对标记的文件进行查找
   体现了emacs 交互式操作的过程. 耶!!
   
   例如,一个例子.
   M-x find-name-dired RET
   Select root of my project
   Enter *.cpp as the filenames to match
   Press "t" to select all files found
   Press "Q" (shift Q) to start the search/replace
   Enter "transaction" as the query, then enter "invoice" as the replacement.
   
* 7. find 查找文件
  先搞定find-name-dired 能够从一个目录中查找到相关的文件再说吧,这是第一步.
  记着一个模糊的文件名称, 我应该能够找到跟它想近似的文件名.
  M-x find-name-dired <目录> <glob标记的文件名称> , 参考前面的例子.
  可以查到相关的文件.
  这大概可以等价于 vim project 文件目录下,用/搜索文件名.

* 8. 小结

不知道为什么, 我又一次的折腾了emacs. 上面大部分是阅读emacs manual所得.
总之,先把emacs 用起来,不舒服的地方或者忍,或者想办法解决,用它完成一些简单的编辑任务.
离开你熟悉的生态环境vim,改用emacs,这就是一种挑战(challenge), 不论vim 能做什么,emacs
总能找到一种办法应对, 好, 让emacs 慢慢追赶vim.
收获有3:
1. 回顾了一些emacs 的基本概念.
2. 重点是掌握了rgrep的用法,从此维护中小project 已不成问题
3. 安装了counsel 扩展,方便了Alt-x 等命令的输入, 为emacs以后继续扩展打下基础.

company mode, 当它在shell mode 下进行 company-capf 补全时,一下子爱上了emacs!

emacs 三重进步
1. 似乎理解了init-package, 这是第一次让我有了感觉.
2. 重用occur 和 rgrep ,并加上grep-a-lot, 实际比美和超过vim 的grepit, 这很实用.
3. 体验了company mode, 那么贴心. 相比vim 的C-p,C-n 补全.
其实,vim 也已经搞定一切了, 为什么还要emacs?  嗯,继续走着瞧吧!

第4步:
搞定了projectile (处理了一点小bug),其功能之强超过了vim的project+altenate+grepit
还剩下一个重度依赖vim taglist, 且看emacs 如何超越?
 hs_minor_mode 也可以一览代码全貌, 不再依赖taglist 了, alt-x list-tags 命令也能列出tags.
第5步:
这里估计需要clang 出场了,猜测.!
先用imenu-list 抵挡一阵! 有taglist 风采. 现在已经不再依赖于taglist了 hs_minor_mode 挺好用.
第6步:
在代码间游走. 像vim的 gd跳转到变量, C-]
loccur.el 可以代替gd,绑定快捷健C-o, Alt+. 等价与C-] 都依赖于tags

2021 年6月1号

当我逐渐熟悉了emacs 的键盘操作,(是这些web代码令我熟悉的.emacs26 对web编程支持较好)
折返c/c++, 想要一个IDE, 其实emacs 已经准备好了.
编译: Alt+x compile 输出的结果可以点击链接跳转到编译代码
调试: Alt+x gdb 就可以调试代码了,可设断点,可执行.好强悍的平台,其它的db工具应该也可用吧?
bashdb, phpdbg

* TODO

emacs 学习成长记相关推荐

  1. Leetcode学习成长记:天池leetcode基础训练营Task02链表

    Task02 链表 知识点总结 单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.即逻辑上位置相邻的元素其物理位置不一定相邻. 链表中的数据是以结点来表示的,每个 ...

  2. python 开课了_解答你学习Python的困惑,《Python小白成长记》开课啦

    原标题:解答你学习Python的困惑,<Python小白成长记>开课啦 继<Python轻松学>和<Python-turtle图形编程入门>两门Python课程后, ...

  3. 揭秘@爱可可:“寂寞呆子”成长记

     从一个人的狂欢到一群人的狂欢,到除了我以外其他人的狂欢,我其实是越来越冷静了.--陈光 陈光算得上是地道的北邮人.从本科到博士,一直到留校任教,刚满 40 的陈光超过一半的时间都是在北邮度过的. ...

  4. AI工程师成长记 - 工作方法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:太子长琴,算法工程师,Datawhale成员 上一篇讲的是AI工程 ...

  5. 90后ACE成长记——从偏居一隅小城里走出的核心技术人

    <ACE成长记>栏目说明 名词解释: 阿里云工程师,简称 ACE (Alibaba Cloud Engineer),代表云计算的爱好者,是最"王牌"(ACE)的一群开发 ...

  6. 【我的物联网成长记7】物联网主流通信协议解读【华为云分享】

    [摘要] 当今物联网的主流通信协议是CoAP/LWM2M协议和MQTT协议,本文将会为您分别解读这些协议的工作方式,了解它们的特点,助您选择最适合您的设备的通信协议. 通信协议又称为传输协议,用于定义 ...

  7. 【我的物联网成长记3】如何开发物联网应用?

    [摘要] 物联网应用是设备管理.故障监测.数据分析的重要工具.本文介绍如何基于物联网平台开发应用,包括API.SDK和图形化开发三种方式. -------------------整体方案------- ...

  8. 蓝的成长记——追逐DBA(20):何故缘起,建库护航 (二次发布-练习使用markdown编辑)

    体现本文更好浏览效果请访问源地址: http://blog.csdn.net/huangyanlong/article/details/48776573 原创作品,出自 "深蓝的blog&q ...

  9. 我的成长记1:手把手教你如何画出令人称赞的图(程序员必读)

    画一张好图的意义? 作为程序员的你,你经常做的除了起给变量和类起名字.另一就是画图了.抛开起名字这个令人头疼的问题,画图对我们来说是一个表达想法非常不错的方法. 因为画图可以清晰的表述你的思维框架,帮 ...

  10. 【学员心得】我的HCIE-DC学习成长旅程

    [学员心得]我的HCIE-DC学习成长旅程 大家好,我叫郑孟,目前于一家互联网公司担任网络工程师,工作时间差不多也快3年了. 也正是在这3年里,我在誉天拿下了HCIE-DC和RHCA的证书,和誉天结下 ...

最新文章

  1. JavaScript基础(一) 数据类型
  2. 单步调试_keil for arm 调试时无法单步运行及打断点
  3. Alpha发布用户使用报告
  4. textview的基本设置
  5. 课时 21:Kubernetes 存储架构及插件使用(阚俊宝)
  6. 信息学奥赛一本通 1030:计算球的体积 | OpenJudge NOI 1.3 12
  7. oracle给表赋清空权限,oracle建表赋权限
  8. 机器视觉:锡膏印刷质量3D检测光学系统
  9. ❤️今天,该让 python 上个热门❤️
  10. Effective Java 思维导图
  11. NYOJ517 最小公倍数
  12. 模式识别 - 名词解释整理
  13. 1.Excel绘制斜线表头
  14. 回归分析中,证明:总离差平方和=回归平方和+误差平方和。
  15. 大白菜无法打开计算机硬盘,大白菜u盘启动盘出现问题及解决办法(上)
  16. OpenFOAM常用类
  17. C. Pythagorean Triples
  18. IDEA 2020主菜单隐藏了
  19. 海康威视2019年校园招聘内推码(2019届春招、2020届实习/秋招)
  20. 手把手教你用c语言编写网络病毒

热门文章

  1. effect和watch 的区别详解
  2. 机器学习实战之信用卡欺诈案列
  3. Hrbust 1865 人类希望——kokoII【记忆化搜索】
  4. wordpress显示文章浏览量并且动态更新浏览量
  5. 苹果MacBook Air M2开箱测评 M2版MacBook Air真实体验感受
  6. 基于MATLAB霍夫变换的复杂情况下车道线检测
  7. 从一个程序员到月入7万自由职业者的故事—《打造你的赚钱机器》让我坐过了4站地铁...
  8. FPGA的进阶项目——开源示波器
  9. 【python爬虫】爬取ip138信息(随机调用User-Agent)
  10. SmartGit 授权文件