主页
1. 配置emacs 极品
1.1. DONE 在org-mode 查看插入的图片
使用快捷键: C-c C-x C-v 或者执行: M-x org-toggle-inline-images
1.2. DONE 使用org-mode 任务管理功能
1.2.1. checkbox
参考链接: org-mode checkbox 使用 - + 等前缀 当标题输入完成后 创建复选框 C-u C-c C-c 切换状态 C-c C-c 在下一行新建复选框 M-S-RET 子框未选满会显示 [-] 示例如下:
1.3. DONE 配置yasnippet
yasnippt 是一个代码模板系统. 可以和eglot 配合使用. 配置好可以极大加快代码速度.
1.3.1. 配置文件
可以参考链接: eglot github . 在init-local.el 加入:
(add-hook 'prog-mode-hook #'yas-minor-mode) (with-eval-after-load 'yasnippet (yas-global-mode 1))
1.3.2. 新建一个模板.
通过 M-x yas-new-snippet 例如在 c-mode 中建立了一个: 输入name 字符串后使用TAB 会变成It's xiliuya 的模板 (仅限于输入非代码时)
# -*- mode: snippet -*- # name:name # key:name # -- It's xiliuya
1.3.3. 复制模板
将 github 上的模板文件夹: snippets 复制到 ~/.emacs.d/snippets/ . 模板链接 : yun63
1.4. DONE 配置auto-insert模板
参考链接: Emacs 模板 经过对比发现emacswiki 较为清晰易于使用 链接: autoinsert emacswiki 使用github 上找到的模板: 模板链接: jaypei/exz-conf 通过在 init-local.el 加入:
;;; 使用auto-insert (add-hook 'find-file-hook 'auto-insert) (add-hook 'find-file-hook #'yas-minor-mode) (setq user-full-name "xiliuya") ;;; (auto-insert-mode 1) (defun my/autoinsert-yas-expand() "Replace text in yasnippet template." (yas-expand-snippet (buffer-string) (point-min) (point-max))) (custom-set-variables '(auto-insert 'other) '(auto-insert-directory "~/.emacs.d/templates/") '(auto-insert-alist '( (("\\.\\([Hh]\\|hh\\|hpp\\)\\'" . "C / C++ header") . ["template.h" c++-mode my/autoinsert-yas-expand]) (("\\.\\([cC]\\|cc\\|cpp\\)\\'" . "C++ source") . ["template.c" my/autoinsert-yas-expand]) (("\\.rs\\'" . "Rust source") . ["template.rs" my/autoinsert-yas-expand]) (("\\.sh\\'" . "Shell script") . ["template.sh" my/autoinsert-yas-expand]) (("\\.el\\'" . "Emacs Lisp") . ["template.el" my/autoinsert-yas-expand]) (("\\.pl\\'" . "Perl script") . ["template.pl" my/autoinsert-yas-expand]) (("\\.pm\\'" . "Perl module") . ["template.pm" my/autoinsert-yas-expand]) (("\\.py\\'" . "Python script") . ["template.py" my/autoinsert-yas-expand]) (("\\.go\\'" . "Go source") . ["template.go" my/autoinsert-yas-expand]) (("[mM]akefile\\'" . "Makefile") . ["Makefile" my/autoinsert-yas-expand]) (("\\.tex\\'" . "TeX/LaTeX") . ["template.tex" my/autoinsert-yas-expand]))))
由于 purcell 配置里go 并没有默认配置 所以go 的模板配置不生效
通过加入 (add-hook 'find-file-hook #'yas-minor-mode)
解决
1.5. DONE 配置org-mode 导出样式
org-mode 导出markdown 格式, 再通过jekyll 转换为html 静态页面的过程过于繁琐. 而且效果并不美观. 故而直接使用org 配置css导出html .
参考链接: emacs-china 官方手册相关页: org-mode
#+TITLE: 主页 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://gongzhitaao.org/orgcss/org.css"/>
建立yasnippet模板:
# -*- mode: snippet -*- # name: css for html export # key: css # -- #+TITLE: ${1:`(file-name-base buffer-file-name)`} #+OPTIONS: toc:nil num:3 H:4 ^:nil pri:t #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://gongzhitaao.org/orgcss/org.css"/> $0
1.6. DONE 重新配置eglot
删除旧配置
(add-hook 'prog-mode-hook 'eglot-ensure)
eglot 依赖外部的lsp server, 所以手动配置add-hook 模式比较合适
(add-hook 'python-mode-hook 'eglot-ensure) (add-hook 'c-mode-common-hook 'eglot-ensure) (add-hook 'rust-mode-hook 'eglot-ensure)
1.7. DONE 配置evil jk 返回正常模式
vi/ vim/ evil 自带快捷键: C-[ . 可以从 插入模式 切换回 正常模式 . 但是有些不便. 简单的配置键绑定:
(local-set-key (kbd "jk") 'evil-normal-state))
可以在当前buffer 执行 C-x C-e 后使用. 但无法在add-hook 中使用,而global-set-key 不支持(kbd "jk"). 通过论坛, 查找到了方案: emacs-china. 可以用 evil-escape 插件实现.
1.7.1. 安装 evil-escape
M-x package-install RET evil-escape RET
1.7.2. 配置 evil-escape
加入配置:
(with-eval-after-load 'evil (evil-escape-mode)) (setq-default evil-escape-key-sequence "jk") (setq-default evil-escape-delay 0.2)
1.8. DONE 配置优化
[X]
加入代码新建模[X]
c[X]
python[X]
rust[X]
elisp
[X]
org-mode 导出到jekyll[X]
html 美化[X]
加入主页超链接头
[X]
使用yasnippet 模板[X]
了解新建模板过程[X]
建立一个org 下css 模板[X]
使用github 配置
[X]
重新配置eglot[X]
解决eglot 打开el 报错[X]
配置 eglot hook[X]
python[X]
c/c++[X]
rust
[X]
配置 evil[X]
安装 evil-escape[X]
配置 evil-escape
- [ ] md 自动导出 jekyll头