前言

前提:Windows下的Emacs配置,默认放在 C:\Users\{User}\AppData\Roaming\.emacs.d AppData是隐藏目录,需要在 “查看”中勾选“隐藏的项目”来打开。

Windows设置home环境变量

为了保持Linux、Windows、Mac OS下配置文件的统一,需要在Windows下设置 home 环境变量,变量值为 C:\Users\{User}

以下配置都将以 C:\Users\{User}\.emacs.d 作为最终配置文件夹,请务必检查。

如果没有新建过 ~/init.el 文件,默认是不存在的。新建txt文档,改成 init.el ,使用Emacs打开。 注意: init.el.emacs 是冲突的,如果在 home 下存在 .emcas 文件,请删除。

插件配置

由于Emacs插件的下载地址都在国外,下载速度很慢,因此首先替换插件下载源,将以下代码放在 init.el 最上面。

  ;; 设置插件管理器源
  ;使用清华大学的镜像源
  (require 'package)
  (package-initialize)
  (setq package-archives '(("gnu"    . "https://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")
                           ("nongnu" . "https://mirrors.tuna.tsinghua.edu.cn/elpa/nongnu/")
                           ("melpa"  . "https://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/"))
      ;; 使用use-package
(unless (package-installed-p 'use-package)
     (package-refresh-contents)
     (package-install 'use-package))
(eval-when-compile
      (require 'use-package))

文件格式配置


  ;; 设置文件编码规则
  (setq default-buffer-file-coding-system 'utf-8-unix)
  ;; 设置org文件导出编码格式
  (setq org-export-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(setq buffer-file-coding-system 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)

ox-hugo配置

以下是ox-hugo插件的配置

(setq org-hugo-base-dir "D:/Workspace/Hugo/")

;; 设置默认的Hugo站点配置文件(如果你的站点配置文件不是默认的config.toml)
(setq org-hugo-section "posts")  ; 默认的Hugo内容部分

  ;; 设置默认的Hugo Front Matter变量
(setq org-hugo-front-matter-format "yaml")  ; 或者 "toml" 或 "json"
;(setq org-hugo-export-with-toc t)           ; 是否导出带有目录的文件
;(setq org-hugo-export-with-section-numbers nil) ; 是否导出带有章节编号的文件
(use-package ox-hugo
  :ensure t)  ; 确保ox-hugo包已安装

模块化配置

init.el 文件中只需要引入其他配置文件,将具体的配置分别放在各自的文件中。

创建一个 ~/lisp/hello.el 文件,代码如下:

;; 定义一个hello-world函数
(defun hello-world())
(interactive)
(message "Hello, Emacs"))

;; 导出本模块
(provide 'hello)

时间和文件名配置

;; 定义一个函数来插入当前时间到文件中
(defun now()
  "在光标位置插入当前时间。"
  (interactive)
  (insert (format-time-string "%Y-%m-%d %H:%M")))

;; 定义一个函数来插入当前缓冲区的文件名到文件中
(defun file()
  "在光标位置插入当前缓冲区的文件名。"
  (interactive)
  (if (buffer-file-name)
      (insert (file-name-sans-extension (file-name-nondirectory (buffer-file-name))))
    (insert "<无文件名>")))