郁郁青青 长过千寻

快乐 Emacs

    笔记本

    1. “开箱即用”
    2. Emacs
    3. 🌊Emacs 大战
    4. 🪄Emacs 魔法
      1. 帮助指令
      2. Windows
      3. 移动游标
      4. 帮助指令
      5. 特殊指令
      6. company
      7. yasnippet(yet another snippet)
      8. ivy-mode
      9. flycheck
      10. C++ IDE
      11. 文件夹操作
        1. 创建文件夹
    5. 🔮Emacs Lisp
    6. 私の Emacs の設定
    7. ✨星のかけら
    8. Reference

2021年 7月29日 星期四 00时46分23秒 CST - 最近看到一位设计师,离得近,现在无聊抄一段这位的摘抄:当一个人产生羞耻感的时候,童年便结束,青春开始了;当一个人的羞耻感丧失的时候,他的青春便结束了。


“开箱即用”

现在很流行“开箱即用”,从速食快餐到软件框架。“开箱即用”的问题是隐藏了过程和细节,事情只剩结果,选择“开箱即用”就像是放弃了一切去取悦“方便”,这样的结果是上手快了,投入却更难了,但是快乐源于投入。

Emacs

这里我要记录的是编辑器 Emacs 的使用,按现在的潮流看,它是逆行的,因为它不是“开箱即用”的。

人们有很多偏爱 Emacs 的理由:

  • 一触即发的上古编辑器之战;
  • Emacs 是魔棒,函数是咒语;
  • 继承使用者的战斗力;
  • 最强编辑器;
  • 自由软件;
  • Emacs 特有螺旋形学习曲线图;以及“作为操作系统”的 Emacs 和“煮咖啡”的 Emacs。

Emacs 是一个多才多艺的编辑器。

Emacs 有内置的帮助文档。M-x~ help-with-tutorial-spec-languageChinese-GB

🌊Emacs 大战

🪄Emacs 魔法

在我想查看“数的转换”相关内容的时候,可以输入:C-h i m elisp RET m Numberic Conversions RET,以后以这个模式描述:info elisp - Numberic Conversions

在我想查看“位运算”的相关内容的时候:info elisp - Bitwise Operations on Integers

Emacs 解释 举例 来源
C-x C-b 打开 buffer 列表 配合C-x bC-x k,切换或杀死某个 buffer 前先执行该键预览所有 buffer
C-x b 切换 buffer
C-x k 杀死 buffer

帮助指令

Emacs 解释 举例 来源
C-h ? 列出帮助项目
C-h c C-p 函数名称 两侧布局
C-h k C-p 函数说明文件
C-h f 解释函数

Windows

Emacs 解释 举例 来源
C-x 2 垂直切割当前 Window 上下布局
C-x 3 水平切割当前 Window 两侧布局
C-x o 切换至其他 Window 配合C-x 2,把焦点转移到新窗口
C-x 0 关闭当前 Window
C-x 1 关闭当前以外的所有 Window
Emacs 解释 举例 来源
C-x C-f 打开或者新建文件
C-x C-1 全屏
C-x C-r 以只读权限打开文件

移动游标

Emacs 解释 举例 来源
C-a 行首
C-e 行尾
M-a 句首
M-e 句尾
C-p
C-n
C-f
C-b

帮助指令

特殊指令

Emacs 解释 举例 来源
C-u 重复指令 C-u 8 C-f移动 8 个字
C-g 停止指令
C-l 中央
C-z 暂停指令
C-s, C-r 搜寻

company

yasnippet(yet another snippet)

  • 打 key 带入程序片段;
  • 下载其他人已完成的程序片段;
  • 定义自己的片段;
  • 不同主模式带入不同的片段(在 c 和 python 里打 ‘main’ 会带入不一样的片段)。

ivy-mode

flycheck

语法检查套件

Emacs 解释 举例 来源
C-c ! v 查看 flyc 配置
C-c ! l 查看检测结果
1
2
3
4
(use-package flycheck
:ensure t
:config
(global-flycheck-mode t))

C++ IDE

  • 跳转定义
  • 自动补全
  • 语法高亮
  • 工作区寻找文件
  • 按键编译
  • 图形化调试
1
2
M-x compile
M-! ~/hello

文件夹操作

创建文件夹

1
2
M-x make-directory RET dir/to/create RET
M-! mkdir -p dir/parent{1,2}/node RET

C-x d‌进入Dired mode,输入 +

绑定命令:(global-set-key (kbd "C-c d") 'make-directory)

🔮Emacs Lisp

1
2
3
4
5
6
7
8
9
10
11
12
; 浮点数不能准确的相等,这里实现一定误差的相等测试
; fun
(defvar fuzz-factor 1.0e-6)
(defun approx-equal (x y)
(or (and (= x 0) (= y 0))
(< (/ (abs (- x y))
(max (abs x) (abs y)))
fuzz-factor)))
; run
(setq foo (- (+ 1.0 1.0e-3) 1.0))
(setq bar 1.0e-3)
(approx-equal foo bar)
1
2
3
4
; 字符串测试用 stringp,string-or-null-p 测试对象是字符或 nil 时返回 t,char-or-string-p 测试是否字符串或字符类型,但是没有测试空字符串的函数,这个函数实现了
; fun
(defun string-emptyp (str)
(not (string< "" str)))
1
2
3
4
5
6
7
8
9
; string-to-number 从字符串转到数字的时候可以设置进制,也可以通过 format 把整数输出为八进制或十六进制字符串,但是无法输出二进制,这里实现
; fun
(defun number-to-bin-string (number)
(require 'calculator)
(let ((calculator-output-radix 'bin)
(calculator-radix-grouping-mode nil))
(calculator-number-to-string number)))
; run
(number-to-bin-string 256) ; => "100000000"
1
2
3
(defun my-subseq (list from &optional to)
(if (null to) (nthcdr from list)
(butlast (nthcdr from list) (- (length list) to))))

私の Emacs の設定

  • 文件管理:dired
  • 智能括号:smartpares
  • Git 客户端:magit-git
  • 项目导航:projectile
  • 翻译:有道翻译、webster
  • web 模式:web-mode
  • markdown:markdown mode
  • 输入法:pyim
  • lint 语法检查:flycheck

emacs:作者的“一生的emacs配置”。

请问ivy和counsel究竟是什么?

Emacs - 工欲善其事必先利其器 第二话 - ivy, counsel, swiper:AcFun 视频

Emacs-config:Youtube 洋葱工作室的 GitHub 上的 emacs 配置

A beginner’s Emacs config:新人肯能会用到的 package

有哪些是必备的emacs扩展?:知乎问题,陈斌的回答

极简Emacs开发环境配置

Emacs の設定:一位日本人的 Emacs 配置,博客主题好看

✨星のかけら

取消预设画面

1
2
3
4
5
6
<- 编辑 .emacs 文件
emacs ~/.emacs
<- 加入以下 elisp 程码
;; ~/.emacs
(setq inhibit-startup-message t)
<- setq 是指派變數 (assign) 的 Function,t 和 nil 分別指 true 和 false,所以 (setq inhibit-startup-message t) 就是將 inhibit-startup-message 這個變數的值設為 true

设置自动保存文件

1
2
(setq auto-save-visited-mode t)
(auto-save-visited-mode +1)

Reference

和直觉有关的歌曲:“Intuition takes me there”, Intuition, Mind Games, John Lennon

AlgorithmTemplatesv:This is my code template and Emacs config for ACM/ICPC, TopCoder, CodeForces and other sport programming contests.

Emacs 能做什么

Text editor learning curves:关于编辑器学习曲线。

水木社区的 Emacs 相关资料

Lisp 的本质(翻译)

X 分钟速成 elisp:这是篇长在 el 文件里的 elisp 教程,从完成最简单的输出字符串的函数开始,逐步完善到文末更复杂的能够控制 buffer 并使用列表的输出字符串的函数,让阅读者上手基本语法和了解 elisp 与 Emacs 的关联。

Teach Yourself Programming in Ten Years

知乎译文:十年学会编程
博客园译文:一份传世典文:十年编程(Teach Yourself Programming in Ten Years)

页阅读量:  ・  站访问量:  ・  站访客数: