Emacs,git 常用技巧总结

是个管理办法,但是感觉流程不够清晰

agenda的一个视图如下:

每次显示一周的,如果有计划,会显示计划,我感觉像日历那样的会更好

  • C-c . : 调出日历,插入当下时间
  • C-c C-s : schedule 的开始时间
  • C-c C-d : schedule 的结束时间
  • C-c C-x C-i : 任务开始(in)
  • C-c C-x C-o : 任务结束(out)
  • M-x org-clock-report: 生成时间统计表
  • C-c a : 查看agenda

(更新包时包之间的依赖很复杂,重装更简单)

  1. mv ~/.emacs.d ~/.emacs.d.bak

  2. git clone –depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d

  3. 打开emacs,等自动更新即可

    因为我用的是Centaur Emacs,如是操作即可

将在原.emacs.d文件夹里的相关备份文件放到新的.emacs.d文件夹里

  1. bookmark文件(所有书签归位)
  2. custom.el文件(所有的自定义快捷键)
  3. snippets文件夹(所有的快捷模板)

作者的ui使用了org-modern的配置,而org-modern里面使用的特殊字符需要电脑装相应的字体(没搜到,所以应该并不常用的字体),因此修改多级标题的图标显示为自定义显示。

原代码 .emacs.d/lisp/init-org.el 文件中

(use-package org-modern
  :after org
  :diminish
  :autoload global-org-modern-mode
  :init (global-org-modern-mode 1))

将其改成:新代码中加了2行自定义的层级图标

;; Prettify UI
(use-package org-modern
  :after org
  :diminish
  ;; --- 新增的部分开始 ---
  :custom
  ;; 这里定义标题层级的图标。列表中的第一个符号对应一级标题,第二个对应二级,以此类推。
  ;; 我换成了一组兼容性更好的常用符号。
  (org-modern-star '("◉" "○" "◈" "◇" "✳" "✚" "✜"))
  ;; --- 新增的部分结束 ---
  :autoload global-org-modern-mode
  :init (global-org-modern-mode 1))

更改前:

更改后:

  • C-x r l : 列出书签
  • C-x r m : 保存书签
  • S-x bookmark-save : 可以在书签保存文件中修修改书签
  • S-M: mark set
  • Shift-S >: 跳到最后

Shift-Tab: 循环标题折叠 C-c C-e: 导出md文件到hugo

打开当下目录的shell:F9,打开EggGump的shell: F4

用于导致org文件为hugo适配的markdown格式

安装完 ox-hugo 后,快捷键 C-c C-e 无法绑定, 需要执行命令

M-x org-hugo-export-wim-to-md

才可使用快捷銉

因此需要在配置文件中添加启动命令,如下

(use-package ox-hugo
  :after ox
  :ensure t)

M-x yas-new-snippet

# -*- mode: snippet -*-
# name: hugo_blog
# key: >hugo
# --
Adding your snippet here!
  • name: 你给你的snippet起的名字
  • key: 要调出snippet时所需要的快捷键

下面的配置中绑定了扩展快捷键 C-c y

(use-package yasnippet
  :ensure t
  :defer t
  :init
  :bind
  (:map yas-minor-mode-map
   ("C-c y" . yas-expand))
  :config
  (setq yas-snippet-dirs '("~/.emacs.d/snippets/"))
  (yas-reload-all))
  1. 输入">hugo"

  2. 正常会弹出扩展提示

  3. 弹出提示后,按C-c y,即可替换面事先安排好的模板了。 提示示例如下:

这里用截图显示,因为使用文本会被识别导致导出错误 需要注意的是,迁移文件时,记得修改HUGO_BASE_DIR为自己的文件,

具体配置可见 使用emacs写hugo博客

  • .emacs.d/custom.el
;; ;;自定义截图
(defun org-screenshot ()
  "Take a screenshot into a unique-named file in the current buffer file
        directory and insert a link to this file."
  (interactive)
  (setq filename
        (concat (make-temp-name "./images/") ".png"))
  (setq dirname
        "./images/"
        )
  (if (file-exists-p dirname)
      ()
    (make-directory dirname)
    )

  ;;(suspend-frame)
  (call-process-shell-command (concat "screencapture -s \"" filename "\""))
  (insert (concat "[[" filename "]]"))
  (org-display-inline-images)
  )

(global-set-key (kbd "C-c p") 'org-screenshot)

;; ;; Yasnippet 配置
(use-package yasnippet
  :ensure t
  :defer t
  :init
  :bind
  (:map yas-minor-mode-map
   ("C-c y" . yas-expand))
  :config
  (setq yas-snippet-dirs '("~/.emacs.d/snippets/"))
  (yas-reload-all))

;; ;; 更改光标为bar
(setq-default cursor-type 'bar) ;更改光标为bar

;; ;; 加载 ox-hugo
(use-package ox-hugo
  :after ox
  :ensure t)

;; ;; latex预览变大
(with-eval-after-load 'org
  (setq org-preview-latex-default-process 'dvipng)
  ;; (setq org-preview-latex-image-width 2.0)

  (setq org-format-latex-options
        (plist-put org-format-latex-options :scale 2.5))
)
;; ;;设置图片预览大用固定值
(setq org-image-actual-width 600)



;; ;;
;; 循环隐藏shell
(defvar my-egggump-shell-buffer "*EggGump-Shell*"
  "Buffer name for the EggGump shell.")

(defun my-toggle-shell-egggump ()
  "Toggle visibility of a shell in /Users/hubing/ExtraLearning/blog/EggGump."
  (interactive)
  (let ((buf (get-buffer my-egggump-shell-buffer)))
    ;; 如果 buffer 存在且窗口可见 → 隐藏窗口
    (if (and buf (get-buffer-window buf))
        (delete-window (get-buffer-window buf))

      ;; 否则 → 显示/创建 shell buffer
      (progn
        (unless buf
          (let ((default-directory "/Users/hubing/ExtraLearning/blog/EggGump/"))
            (shell my-egggump-shell-buffer)))
        (pop-to-buffer my-egggump-shell-buffer)))))

(global-set-key (kbd "<f4>") #'my-toggle-shell-egggump)
  ;; ;;使用snipeast 截图
    (defun org-snipaste ()
      "Take a screenshot into a unique-named file in the current buffer file
            directory and insert a link to this file."
      (interactive)
      (setq filename
            (concat (make-temp-name "./images/") ".png"))
      (setq dirname
            "./images/"
            )
      (if (file-exists-p dirname)
          ()
        (make-directory dirname)
        )

      ;;(suspend-frame)
      (call-process-shell-command
       (concat "/Applications/Snipaste.app/Contents/MacOS/Snipaste snip"))
      (insert (concat "[[" filename "]]"))
      (org-display-inline-images)
      )


    (global-set-key (kbd "C-c y") 'org-snipaste)

  ;; ;; 打开shell
;; ;; 按F4打开指定位置的shell
(defun my-open-shell-egggump ()
  "Open a shell in /Users/hubing/ExtraLearning/blog/EggGump."
  (interactive)
  (let ((default-directory "/Users/hubing/ExtraLearning/blog/EggGump/"))
    (shell)))

(global-set-key (kbd "<f4>") #'my-open-shell-egggump)
  1. 修改配置,保证名字和邮箱为新号

  2. 绑定远程的

  3. 本地生成key, 并将这个key传到github中

  4. 即可开始推送

    通过将远程仓库git clone到本地(注意这里要使用ssh,github好像对https限制了),再将内容复制到这个仓库里能更容易地完成往新账号的推送