\n:设置文档的标题
参考链接
面向产品经理的Emacs系列教程配套配置文件
early-init.el
在Emacs刚启动,还未加载主要配置文件时的配置文件。
在 Emacs Lisp 中,可以使用 functionp 函数来判断一个符号是否绑定到一个函数上。functionp 函数用于检查一个对象是否是一个函数。如果对象是一个函数,functionp 将返回 t,否则返回 nil。
下面是一个示例代码,演示了如何使用 if 条件判断函数是否存在:
|
|
|
|
init.el
init.el
是Emacs的主要配置文件。
init.el 文件头
|
|
package包管理配置
|
|
安装use-package插件
use-package 是一个让Emacs配置更加结构化更加清晰的一个宏插件。
|
|
quelpa包管理器
quelpa 是配合 package.el
使用的,基于git的一个包管理器。
使用示例:
示例1 常规操作
|
|
示例2 github访问不了,使用项目镜像链接
|
|
|
|
加载模块化配置
|
|
init.el 文件尾
|
|
init-ui.el
init-ui.el 文件头
|
|
spacemacs-theme主题
spacemacs-theme 是我非常喜欢的一个主题包。
|
|
其他UI零散设置项
|
|
编码设置
统一使用 UTF-8 编码。
|
|
keycast按键展示
keycast mode 插件可以在模式栏上展示所有的按键,以及对应的函数。
|
|
shackle窗口管理
shackle 插件能自定义窗口的弹出方式。
|
|
popper窗口弹出管理
我们通过 popper 插件,来控制窗口的弹出行为,与 shackle 一起配合使用。
|
|
winner窗口管理
内置的 winner
插件是一个窗口管理器,可以通过 winner-undo
和 winner-redo
命令恢复或重做窗口布局。
|
|
init-ui.el 文件尾
|
|
init-base.el
init-base.el 文件头
|
|
savehist记住迷你缓冲区历史
记住迷你缓冲区历史。
|
|
saveplace记住每个文件的光标位置
自动记住每个文件的最后一次访问的光标位置。
|
|
undo-tree撤销设置
undo-tree 插件可以提供一个可视化的撤销、重做系统,我们使用 C-/
来撤销,使用 M-_
来重做。
|
|
super-save自动保存
super-save 插件能自动保存缓冲区。它可以设置在某些行为(如窗口切换、或窗口空闲一段时间)下自动保存。
|
|
init-base.el 文件尾
|
|
init-edit.el
init-edit.el 文件头
|
|
Emacs备份设置
不使用Emacs的自动备份设置。
|
|
解除一些不常用的快捷键
将一些不常用的快捷键解除,防止误操作。
|
|
delsel选择文本输入时直接替换
Emacs默认选择文本后直接输入,是不会直接删除所选择的文本进行替换的。通过内置的 delsel
插件来实现这个行为。
|
|
自动重载设置
当我们的文件发生了改变后,我们希望Emacs里打开的永远是最新的文件,这个时候,我们需要对自动重载进行设置,让我们的Emacs在文件发生改变的时候自动重载文件。
|
|
avy光标移动
avy 是一个光标移动插件,能快速将光标移动到屏幕上的任意字符,非常强大!
|
|
amx 记录命令历史
这个插件可以记录我们每次调用 M-x 时输入的命令历史,然后每次将最常用的显示在前面,这对于我们短时间希望频繁输入某几个命令的场景非常有用。
|
|
window-numbering 快捷键切换窗口
分屏之后的emacs在屏幕切换的时候会比较麻烦,针对这个功能有一个可以实现这个的插件,也就是window-numbering。
使用方法:<M-number>
|
|
mwim 优化光标移动到行首/行尾
C-a 对应了 move-beginning-of-line,M-m 对应了 back-to-indentation。当代码有缩进时,前者会把光标移动到行首(到空格之前),后者会移动到代码文字的开头(到空格之后)。那么实际中这两个按法差别较大,且不易区分,使用起来不方便。mwim 就将二者合并,覆盖 C-a 为 mwim-beginning-of-code-or-line,这样按一次 C-a 时移动到代码文字开头,再按一次则是移动到整行的行首,如此反复。
同时,更有意义的是,它还可以覆盖 C-e move-end-of-line 为 mwim-end-of-code-or-line,当本行代码结尾有注释时,第一次按 C-e 将光标移动到代码尾部、注释之前。再按一次则是移动到整行的行尾。 这就大大提高了写代码的效率。
|
|
dashboard 配置欢迎页面
起初每当我们打开 Emacs 都有一个欢迎界面,显示了一些 Emacs 的帮助信息。这对刚入门而言比较方便,但当我们熟练后这个页面就逐渐无用了。dashboard 就是一个新的欢迎界面,可以列出最近打开的项目、最近打开的文件等等。按下 p 或 r 就可以快速 跳转到相应小结里。还可以列出来标记过的书签、org-mode (Emacs 自带的一个强大的笔记系统)日程、自定义控件等。
|
|
projectile
配合dashboard使用
|
|
marginalia 为 Emacs minibuffer 中的选项添加注解
一个为 Emacs minibuffer 中的选项添加注解的插件。
|
|
which-key 根据快捷键前缀提示快捷键
当按下部分快捷键前缀时,它会通过 minibuffer 提示你都有哪些可以按的快捷键及其命令名。
|
|
hydra 把一组特定场景的命令组织到一起, 通过简单按键来进行调用
hydra 主要功能是把一组特定场景的命令组织到一起, 通过简单按键来进行调用。
|
|
use-package-hydra
配合hydra使用
|
|
multiple-cursors多光标编辑
multiple-cursors 插件能让Emacs实现多光标编辑和移动。
|
|
highlight-symbol 高亮出当前 Buffer 中所有的、与光标所在处的符号相同的符号
这个插件可以高亮出当前 Buffer 中所有的、与光标所在处的符号相同的符号。也就是例如一些同名变量、函数名等。虽然在后面我们使用一些其他插件时也会捎带有类似功能,但它可以同时高亮很多字符,便于阅读代码等。
|
|
rainbow-delimiters 用不同颜色标记多级括号,方便看清代码块
rainbow-delimiters - GitHub 主页
这个插件可以用不同颜色标记多级括号,方便看清代码块(尤其在 EmacsLisp 中)。
|
|
evil(为 Vim 用户)
evil 可以让习惯了 Vim 的用户在 Emacs 中使用 Vim 按键方式,大大减轻了 Vim 用户转入 Emacs 的成本。
|
|
WorkLogReport 工作日志报告
插入工作日志报告模板
为什么%s会被替换为时间戳而不是其他内容被替换为时间戳,原理是什么 这是因为在 Emacs Lisp 中,`format` 函数的工作方式类似于 C 语言中的 `printf` 函数。`format` 函数接受一个格式字符串和一系列参数,然后根据格式字符串中的格式指定符(如 `%s`、`%d` 等)将后续的参数插入到格式字符串中。
在你的代码中,`format` 函数的格式字符串是:
```lisp "* %s ,#+BEGIN_SRC emacs-lisp :tangle %s.txt %s: name\n1、 ,#+END_SRC" ```
这个字符串中有三个 `%s`,所以 `format` 函数需要三个额外的参数。在你的代码中,这三个参数都是 `block-name`,即你处理过的时间戳。
所以,当 `format` 函数运行时,它会依次取出 `block-name`,并将其插入到格式字符串中的 `%s` 的位置。这就是为什么 `%s` 会被替换为时间戳的原理。
如果你希望将不同的内容插入到格式字符串中,你只需提供不同的参数即可。例如:
```lisp (format "Hello, %s! Today is %s." "Alice" "Monday") ```
这段代码会返回字符串 "Hello, Alice! Today is Monday."。 ,****************************************************************************** 这句有什么用:(block-name (concat clean-time)) ; 构建代码块名 这一句 `(block-name (concat clean-time))` 的作用是创建一个新的变量 `block-name`,并将其设置为 `clean-time` 的值。
在这个上下文中,`clean-time` 是一个已经去除了破折号和冒号的时间字符串。`concat` 函数通常用于连接多个字符串,但在这里,它只有一个参数 `clean-time`,所以它实际上只是返回 `clean-time` 的值。
因此,这一句的效果就是创建了一个新的变量 `block-name`,并将其设置为与 `clean-time` 相同的值。后面的代码中使用 `block-name` 作为代码块的名字。
如果你的代码中没有需要使用不同的名称来表示清理过的时间戳,那么这一行代码实际上是不必要的,你可以直接使用 `clean-time`。但是,如果你打算在后续的代码中修改 `block-name` 或 `clean-time` 的值,那么这一行代码就很有用了,因为它确保了 `block-name` 和 `clean-time` 是两个独立的变量,修改一个不会影响另一个。
|
|
g-org-insert-note-header 插入一些 Org 模式的头部信息
用于在当前光标位置插入一些 Org 模式的头部信息。这些头部信息包括了一些选项,标题,作者以及一些其他设置
|
|
g-org-emacs-lisp-code-block 插入emacs-lisp代码块
用于插入emacs-lisp代码块
|
|
g-org-c-code-block 插入C语言代码块
用于插入c语言的代码块
|
|
g-org-bash-code-block 插入bash语言的代码块
用于插入bash语言的代码块
|
|
g-org-html-code-block 插入html语言的代码块
用于插入html语言的代码块
|
|
markdown
使emacs支持markdown模式编辑文件
|
|
init-edit.el 文件尾
|
|
init-org.el
init-org.el 文件头
|
|
org-appear自动展开强调链接
通过 org-appear 插件,当我们的光标移动到Org mode里的强调、链接上时,会自动展开,这样方便进行编辑。
|
|
org-auto-tangle自动tangle设置
org-auto-tangle 插件可以在Org mode下自动进行tangle。
|
|
org-capture快速记录设置
|
|
denote笔记设置
denote 是一个轻量级的笔记插件,拥有良好的文件名命名模板。
|
|
consult-notes查找笔记
consult-notes 插件可以通过consult快速找到笔记。
|
|
org-super-links反链设置
org-super-links 插件可以设置反向链接。
|
|
ox文件导出通用设置
下面是org文件导出的通用设置。
|
|
org导出后端设置
ox-html导出HTML设置
我们先来对HTML导出做一个基本设置:
|
|
ox-latex导出PDF设置
ox-latex
是Org mode自带的功能,可以将Org文件导出为latex文件和PDF文件。
|
|
ox-gfm导出Markdown设置
我们通过 ox-gfm 插件来导出Github样式的Markdown文件。
|
|
ox-publish导出静态站点设置
|
|
ox-hugo导出博客设置
ox-hugo 插件可以将 org 文件导出为 hugo 需要的 Markdown 文件,并快速通过 hugo 进行博客的生成和发布。
|
|
toc-org目录自动生成
toc-org 插件可以在Org文件里自动生成目录,只需给一个标题行设置一个标签为 toc
或 toc_2
即可(后者只生成2层)。
|
|
ol新增链接类型
|
|
图片粘贴
通过 pngpaste
这个命令行工具,将系统剪贴板里的图片,输出到当前文件同名的 assets
文件夹下,然后自动在当前org文件的光标处插入图片链接,并设置图片链接的宽度属性。
|
|
init-org.el 文件尾
|
|
init-completion.el
Emacs的补全设置。
init-completion.el 文件头
|
|
vertico 提供了一个垂直样式的补全系统
vertico 插件提供了一个垂直样式的补全系统。
|
|
orderless 插件提供一种无序的补全新姿势,将一个搜索的范式变成数个以空格分隔的部分
oderless 插件提供一种无序的补全新姿势,将一个搜索的范式变成数个以空格分隔的部分,各部分之间没有顺序,你要做的就是根据记忆输入关键词、空格、关键词。
|
|
marginalia 给迷你缓冲区的补全候选条目添加一些提示
marginalia 插件给迷你缓冲区的补全候选条目添加一些提示。
|
|
consult 基于Emacs自带的补全机制,提供了一系列的补全命令
consult 插件基于Emacs自带的补全机制,提供了一系列的补全命令。
For locate on MacOS:
locate
is not enabled in MacOS by default. We need to enable it via: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist- Then we need to wait
locate
to build db for the whole file system.- If there is something wrong with updating locate db, we can update it manually via: chomd 755 ~/Library ~/Downloads ~/Documents ~/Desktop sudo /usr/libexec/locate.updatedb
|
|
company Emacs最广为使用的补全插件
Emacs最广为使用的补全插件便是 company-mode,其官方主页上已有详细的说明。
|
|
yasnippet模板补全
yasnippet 插件是一个非常强大的模板补全系统。
|
|
css for html export
|
|
emacslisp
|
|
embark 插件提供了一系列的迷你缓冲区的类似右键机制的增强
embark 插件提供了一系列的迷你缓冲区的类似右键机制的增强。
|
|
init-completion.el 文件尾
|
|
init-dired.el
Emacs文件管理设置。
init-dired.el 文件头
|
|
init-dired.el 文件尾
|
|
init-tools.el
init-tools.el 文件头
|
|
helpful帮助增强
helpful 插件提供了帮助增强。
|
|
pass密码管理
通过 pass 插件来进行密码管理。
|
|
cnfonts 用于缩放字体
cnfonts 原来叫: chinese-fonts-setup, 是一个 Emacs 中英文字体配置工 具。可以比较方便地实现中文字体和英文字体等宽(也就是大家常说的中英 文对齐)。
|
|
bhj-fonts字体配置
参考链接
|
|
init-tools.el 文件尾
|
|
init-rss.el
Emacs的RSS新闻阅读设置
init-rss.el 文件头
|
|
elfeed 一个非常棒的RSS新闻阅读客户端
elfeed 插件是一个非常棒的RSS新闻阅读客户端。
|
|
elfeed-goodies给elfeed优化增强
我们通过 elfeed-goodies 插件给 elfeed 进行优化增强:
|
|
init-rss.el 文件尾
|
|
init-shell.el
Emacs里的shell设置。
init-shell.el 文件头
|
|
eshell 基本配置
|
|
eshell alias 设置
|
|
eshell 里的 C-d
让 C-d
更智能:
|
|
Eshell 的命令历史
|
|
有些命令使用 term
有一些命令如 top,我们还是使用 term:
|
|
eshell-git-prompt 命令行主题
eshell-git-prompt 插件提供了数个好看的 Eshell 命令行主题。
|
|
eshell-syntax-highlighting 语法高亮
eshell-syntax-highlighting 插件为Eshell提供语法高亮。
|
|
capf-autosuggest自动补全
capf-autosuggest 提供Fish类似的Eshell命令自动补全功能。类似的插件还有 esh-autosuggest。
|
|
eshell-up快速进入父级文件夹
eshell-up 插件可以快速进入当前文件夹的任何一个父级文件夹。通过 up
命令(已经设置了up 在eshell里的alias)进入当前文件夹的任何一级父目录。
|
|
init-shell.el 文件尾
|
|
init-browser.el
init-browser.el 文件头
|
|
EWW 配置
Emacs 内置 EWW 浏览器配置。
|
|
init-browser.el 文件尾
|
|