ZucchiniY / .emacs.d

My Emacs configuration

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Emacs 从头开始

今天读了一篇文章 怎么学习 Emacs ?如何达到真正融汇贯通的境界?

为什么我一直都不能利用 Emacs 让我的工作变得更快速?不像许多大神据说的, Emacs 让工作和开发效率提高?

这一切的原因都是因为对 Emacs 的理解太少了,但是按照大神的方案来看的貌似有点难,毕竟是 1241 页英文文档。

没办法,在英文面前,我又一次摔倒了。但是我对现在的 Emacs 配置有了一个新的想法,也许我不应该再过多的依赖别人的配置了。

试用了一天的 Emacs 之后,感觉自己的小指要断了,看来,对于 Emacs 来说,小指的负担还是太重了。

知道自己想要的功能

在使用了一段时间之后,我发现我其实经常使用的功能就是几个。

笔记
用来记录自己要做什么,在做什么,做过什么的地方
计划
记录自己的工作或者一些生活上的思考
博客
将遇到的问题的解决方法做成笔记,发布到 GitHub 上
开发
主要写 Python 和 Web 相关的代码

再经过一段时间的使用之后,对于我来说,最需要的 package 就是:

Org Mode
记笔记,做计划,写博客 (配合 ox-hugo) ,等所有的内容,都可以使用。
Magit
开发的时候做代码管理,可以说是非常好用的一个功能,几乎是 Emacs 神器。
Org Roam
快捷笔记方式,用来更好的规划自己的任务。从这一刻起,真正将 Emacs 用为自己的工具。

所以在这次从头开始的配置中,第一个需要的就是 Org Mode + Org Roam + Magit。

为自己想要的功能增加对应的快捷键

也许这不是最好的方法,但确是对我来说最适合的配置。而且快捷键的配置也主要只针对比较重要的插件,其它的都放到 other 的配置中。

basis

M-S-<return>
全屏界面
M-s-<return>
最大化窗口

使用 general 定义 leader key [SPC][SPC m]

fs
save-buffer
fd
dired
bk
kill-buffer
qq
save-buffers-kill-emacs
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
wq
delete-window
wa
delete-other-windows

counsel

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

增加引用最新版本的 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,插入一个「非激活」时间戳

Magit

SPC g g
启动 Magit

company

M-/
company-complete
C-p
company-select-previous
C-n
company-select-next
<tab>
company-complete-common-or-cycle

treemacs

leader key SPC t

c
treemacs select window
t
treemacs
b
treemacs bookmark

projectile

SPC p
projectile command map
SPC p p
counsel-projectile-switch-project
SPC p /
counsel-projectile-grep
SPC SPC
counsel-projectile-find-file

wakatime

移除 wakatime 功能,统计的有问题,而且使用较少。

增加了 https://wakatime.com/dashboard 配置,使用 *wakatime* 进行工作统计,希望可以提升自己的效率。

org-super-agenda

增加https://github.com/alphapapa/org-super-agenda 的功能,用来合理的显示任务的优先级和任务的类型。

mind map

用来将 org 文档利用 graphviz-dot 生成 mind map 图。

pyim

移除 pyim 功能。 增加 emacs 中文输入法的支持。

- M-j :: 在是英文的时间,将默认的输入变成中文。

emacs-rime

不再使用。

输入法使用 emacs-rime 功能,不再需要复杂的 pyim 的配置,简单的几行设置就可以使用中文件输入的功能有,经过测试与 evil 模式结合使用非常方便,唯一的就是缺少临时输入英文的更好的方案,但是可以直接输入英文,通过回车的方法直接上屏。

plantuml

增加专门为 plantuml 所使用有配置。

Plantuml 主要用来绘制流程图、思维导图等许多图例。

writeroom

增加 writeroom 的配置,用来专注于写作。

SPC r w
启动和关闭专注写作模式

lsp mode

使用 lsp 作为开发的后台,主要支持 JavaScript / Vue / Python 几门语言。

python
=pip install ‘python-language-server[all]’=
JavaScript
brew install deno
css
=npm install -g vscode-css-languageserver-bin’=
html
=npm install -g vscode-html-languageserver-bin’=
vue
npm install -g vls

Python + anaconda or miniconda

切换使用 anaconda-mode 替换 lsp mode 作为 Python 的开发环境。

  1. anaconda 的开发环境设置比较方便,特别是在 Mac 下,如果直接使用 /local/bin/python3 来作为环境,使用 venv 的方式管理,会有一些使用上的问题,而且不易迁移,所以就使用 conda 来管理 Python 环境。
  2. anaconda 与 PyCharm 可以直接使用,而对于 pyenv 和 pipenv 、 poetry 等环境工具,使用起来都不是特别方便。

stock 股票功能

SPC k
启动之后,可以从中获取对应的股票数据

calendar + cal-china-x + calfw

使用 Calendar 和 cal-china-x 来设置需要提醒的日期,防止自己忘记。

引入 calfw 包来展示相关的日历,除了具体的日期外,还可以增加展示 org-agenda 中的内容。

django (pony-mode)

基础管理

SPC mjm
启动 pony-mode 管理会话

文件管理

SPC mjfs
打开项目的 settings.py 文件

服务管理

SPC mjrd
停止开发服务
SPC mjru
启动或者打开开发服务
SPC mjrt
启动一个秒级的服务

测试管理

SPC mjtd
Move down the traceback one level
SPC mjte
Go to the file and line of the last stack trace in a test buffer
SPC mjto
Open the file in a traceback at the line specified
SPC mjtt
Run the test(s) given by command
SPC mjtu
Move up the traceback one level

recentf

发现最大化 Emacs 之后,dashboard 中的 recent 中的文件记录发生改变,翻看代码发现 dashboard 中引入了 recentf 。在 basis.el 中增加 recentf 的引入后,问题解决。

org roam

配置 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 生成的关系图不同步问题

About

My Emacs configuration


Languages

Language:Emacs Lisp 78.4%Language:C 18.7%Language:YASnippet 2.9%