主页

目录

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. 购物清单
    • [-]
      • [ ] 猪肉
      • [X] 鱼头
    • [X]
    • [ ]

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头

作者: xiliuya

Created: 2022-11-29 二 19:36