今天读了一篇文章 怎么学习 Emacs ?如何达到真正融汇贯通的境界?
为什么我一直都不能利用 Emacs 让我的工作变得更快速?不像许多大神据说的, Emacs 让工作和开发效率提高?
这一切的原因都是因为对 Emacs 的理解太少了,但是按照大神的方案来看的貌似有点难,毕竟是 1241 页英文文档。
没办法,在英文面前,我又一次摔倒了。但是我对现在的 Emacs 配置有了一个新的想法,也许我不应该再过多的依赖别人的配置了。
试用了一天的 Emacs 之后,感觉自己的小指要断了,看来,对于 Emacs 来说,小指的负担还是太重了。
在使用了一段时间之后,我发现我其实经常使用的功能就是几个。
- 笔记
- 用来记录自己要做什么,在做什么,做过什么的地方
- 计划
- 记录自己的工作或者一些生活上的思考
- 博客
- 将遇到的问题的解决方法做成笔记,发布到 GitHub 上
- 开发
- 主要写 Python 和 Web 相关的代码
再经过一段时间的使用之后,对于我来说,最需要的 package 就是:
- Org Mode
- 记笔记,做计划,写博客 (配合 ox-hugo) ,等所有的内容,都可以使用。
- Magit
- 开发的时候做代码管理,可以说是非常好用的一个功能,几乎是 Emacs 神器。
- Org Roam
- 快捷笔记方式,用来更好的规划自己的任务。从这一刻起,真正将 Emacs 用为自己的工具。
- projectile
- 项目快速切换,修改配置、开发工具时使用都非常频繁。
所以在这次从头开始的配置中,第一个需要的就是 Org Mode + Org Roam + Magit。
删除一些长时间未使用、非基础的配置,同时调整一些配置代码的位置,整合一些配置文件中的内容。
此配置下主要是一些必须的设置、工具配置和许多个人比较喜欢使用的工具。
将 core-variable 的内容合并到 core-basis 中。basis 仅用来配置公共变量和基础设置的内容。
- M-S-<return>
- toggle-frame-fullscreen 全屏界面
- M-s-<return>
- toggle-frame-maximized 最大化窗口
- C-=
- er/expand-region 扩展选择区域
配置 use-package 包,并增加一些基础包引入,同时将 general 调整到此配置下,用来配置基础的快捷键。
合并 evil 和 general 配置方案。
使用 general
定义 leader key [SPC]
。
- fs
- save-buffer
- fd
- dired
- bq
- kill-buffer
- save-buffers-kill-emacs
- wq
- delete-window
- wu
- winner-undo
- wr
- winner-redo
- wo
- other-window
- wv
- split-window-vertically
- w-
- split-window-horizontally
- wl
- evil-window-right
- wh
- evil-window-left
- wk
- evil-window-up
- wj
- evil-window-down
- wa
- delete-other-windows
- 1~0
- winum-select-window-[1~0]
- ov
- cfw:open-org-calendar
leader key SPC
- :
- counsel-M-x
- sS
- swiper-all
- ss
- swiper
- ff
- counsel-find-file
- fr
- counsel-recentf
- bb
- counsel-switch-buffer
- cg
- counsel-git-grep
- cr
- counsel-rg
增加引用最新版本的 org mode,不再是使用 Emacs 自带的版本。
leader key SPC o
- a
- 打开 agenda
- b
- 在 org buffer 间切换
- c
- 启动 org-capture
- d
- 在当前位置插入子标题
- e
- org-deadline
- h
- counsel-org-clock-history
- o
- 设置 org 的标签
- p
- org-pomodoro
- s
- org-schedule
- t
- 设置 TODO 状态
- x
- counsel-org-clock-context
- E
- org-export-dispatch
- R
- org-clock-report
- C-o
- org-open-at-point 打开当前位置的链接
- .
- org-clock-in
- ,
- org-clock-out
- &
- org-mark-ring-goto ,从链接跳转回原来的位置
- `
- org-time-stamp,插入一个「激活」时间戳,可在 Agengda 中看到
- !
- org-time-stamp-inactive,插入一个「非激活」时间戳
增加专门为 plantuml 所使用有配置。Plantuml 主要用来绘制流程图、思维导图等许多图例。
增加一些文件编辑对应的引用包,用来编写笔记和配置文件
org-roam 工具调整到 core/ 下,作为常用的工具,一直启用。
使用 Org Roam 进行任务规划、记录笔记等内容,替换部分 org capture 的内容。
- SPC n l
- org-roam-buffer-toggle 查看对应的反向链接的文章
- SPC n f
- org-roam-node-find 查找所有 roam 中的文件,可以查看文章的标题(title)和 Alias 的内容
- SPC n g
- org-roam-ui-mode 打开查看生成的文章关系网
- SPC n i
- org-roam-node-insert 将某段内容更新为关联关系
- SPC n c
- org-roam-capture 新增文件或者继续插入内容
- SPC n r
- org-roam-ref-add 增加对应的参考
- SPC n a
- org-roam-alias-add 增加别名
- SPC o g
- org-id-get-create 增加 Org ID
- SPC n t
- org-roam-tag-add 增加标签
- SPC n j
- org-roam-dailies-capture-today 新增本日、本周、本月对应的内容,用来增加任务单
- SPC n k
- org-roam-dailies-goto-today 跳转到本日、本周、本月的文件
- SPC n n
- org-roam-dailies-goto-next-note 跳转到下一篇内容,如果是日则是下一天,周则是下一周
- SPC n p
- org-roam-dailies-goto-previous-note 返回上一篇内容,如果是日则是上一天,周则是上一周
- SPC n s
- org-roam-db-sync 刷新存储的关系,解决
org-roam-ui-mode
生成的关系图不同步问题
使用快捷键 SPC n j
或者 SPC n k
后输入下面的模板编号,可以使用对应的模板。
- w
- 周计划
- m
- 月计划,阅读清单
- j
- 季度 OKR
月计划主要分为 2 类,一类是 关键任务 主要指需要完成的任务和工作;另一类是 阅读计划 主要是针对每类任务,需要阅读的文章或者书籍。
- 计划任务
- 在每个季度完成 OKR 的设计,按方向分为几类,然后按 OKR 将任务保存到月计划中。每个计划工作时,更新到周计划内,开始任务统计。
- 阅读计划
- 将需要阅读的书籍或者文章先放到月计划的阅读清单中,阅读完成之后,将清单更新到每年的阅读清单中。阅读计划主要包括书名、作者、完成时间、阅读渠道,如果有对应的笔记,则建立 roam 的链接。阅读渠道主要有微信读书、实体书、电子书三类。
- SPC g g
- 启动 Magit
- M-/
- company-complete
- C-p
- company-select-previous
- C-n
- company-select-next
- <tab>
- company-complete-common-or-cycle
leader key SPC t
- c
- treemacs select window
- t
- treemacs
- b
- treemacs bookmark
- SPC p
- projectile command map
- SPC p p
- counsel-projectile-switch-project
- SPC p /
- counsel-projectile-grep
- SPC SPC
- counsel-projectile-find-file
使用 Calendar 和 cal-china-x 来设置需要提醒的日期,防止自己忘记。
引入 calfw 包来展示相关的日历,除了具体的日期外,还可以增加展示 org-agenda 中的内容。
不再使用 Emacs 作为开发平台,仅作为完全的笔记平台。
使用 lsp-mode 作为程序补全的工具,主要使用 Python
、 JavaScript/TypeScript
开发项目。
目前仅使用 pyright
语言。后续增加前端相关配置。
- Python
npm install -g pyright
- JavaScript/TypeScript
npm install -g typescript-language-server typescript
启动后台:typescript-language-server --stdio
- HTML/CSS
npm install -g vscode-langservers-extracted
使用 dap-mode 对开发做测试和 debug 。
由原本的 all-the-icons 和 Iosevka ss14 字体,修改为 Iosevka nerd 字体。
- 英文:Iosevka Nerd Font Mono 14
- 中文:华文仿宋 14
- 英文:Iosevka Nerd Font Mono 14
- 中文:微软雅黑 14
brew tap homebrew/cask-fonts
brew install font-hack-nerd-font