Posts tagged "Emacs":

优化emacs的方法总结(新手向)

<2019-09-14>

开启debug

(setq debug-on-error t)

调整启动时垃圾回收的阀值

(setq gc-cons-threshold 402653184
      gc-cons-percentage 0.6)
(add-hook 'emacs-startup-hook
          (lambda ()
            (setq gc-cons-threshold 16777216
                  gc-cons-percentage 0.1
                  file-name-handler-alist nil)))

看看启动期间都干了什么

https://github.com/jschaf/esup
M-x package-install RET esup RET
M-x esup RET
稍等一会儿会显示详细的信息

使用use-package来自动加载

https://github.com/jwiegley/use-package

(unless (or package-archive-contents (package-installed-p 'use-package))
  (package-refresh-contents)
  (package-install 'use-package))

有些包特别有用,你希望可以很快就能使用它们,但是它们本身在Emacs启动过程中又不是必须的,可以使用defer来延迟加载, 例如

(use-package recentf
  :defer 1) ;;空闲一秒后加载

使用mode建立内部的延迟绑定

(use-package rust-mode
  :mode "\\.rs\\") ;;打开后缀名为rs的文件后加载

按下相应快捷键加载可以使用bind

(use-package magit
  :bind ("C-x g" . magit-status)) ;;按下相应快捷键后

禁用package-initialize 手动去填充path

这个path就是第一次安装的时候把所有的path缓存起来 ,第二次就跳过一些初始化的设置 ,直接加载 ,Emacs启动时间不少都花费在package-initialize上
可以看看这来两个
https://github.com/honmaple/emacs-maple-package
https://github.com/hlissner/doom-emacs

定位卡顿问题

例如我在编辑某个文件的时候特别卡,想要快速定位问题可以
M-x profiler-start
之后emacs会提示你检测内存还是cup ,选择好后可以执行一遍之前感到卡顿的那个操作 ,之后可以
M-x profiler-report
emacs 会显示出内存和cpu的统计数据 ,然后调整占用cpu和内存占用比较高的就行

TODO 加载顺序

可以把theme之类的放到前面加载 ,可以造成加载速度变快的错觉 (大雾
关闭工具栏 ,滚动条 ,菜单栏也会影响一点启动速度 ,这是因为它们会先加载出来然后再关闭 …

(tool-bar-mode 0)               ;;关闭工具栏
(scroll-bar-mode 0)             ;;关闭滚动条
(menu-bar-mode 0)               ;;菜单栏

emacs27 多了个xx.el 好像可以解决这个问题 ,待补充

emacs c/s 模式

启动emacs daemon

systemctl --user enable emacs.service

运行 emacsclient -n -c 就能连接上emacs daemon (不太喜欢这种 …)

Emacs 趣事 happy hacking

<2019-08-28>

在emacs中下五子棋再也不会被嘲讽了

evil

Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions.
emacs里想用modal editing,emacser会给你推荐evil。vim里想用emacs binding,vimer会觉得你是不是疯了 :)
嗯 emacs 一定不VI好用,毕竟VI不能变成EMACS 2333

This file is a part of gnu emacs

开始的时候,emacs的auto-insert template里有句This file is a part of gnu emacs。然后大家都用起来了,许多人都懒得改。但是实际上只有GNU ELPA和emacs内置的package才能说自己是part of emacs,于是就有人手动把自己改成This file is NOT a part of GNU Emacs。 笑点类似「RMS感染了流感病毒,一周后流感病毒变成了GPL协议」这样的黑色幽默式的自嘲,总所周知FSF里的律师比程序员多 :rofl: 这个故事的结局是auto-insert template干脆把这行去掉了

Brings the restclient to vim!

Emacs插件锦集 TODO

<2019-08-12>

TODO Coder

Magit

magit-status 定义为快捷键 C-x g 相当于 git status 但显示的信息更多
在文件上按 Tab 相当于 git diff xxx
s 移动到暂存区, u 反移动, 相当于git add -u 和 git reset HEAD
c 相当于 git commit
C-c C-c 提交更改
p 推送变更, 例如光标放在master上就相当于git push

(use-package magit
  :bind ("C-x g" . magit-status))

Undo-tree

C-x u 可视化撤消树, 神器

(use-package undo-tree
  :init (global-undo-tree-mode)
  :config
  (setq undo-tree-auto-save-history t)
  (setq undo-tree-history-directory-alist
        `(("." . ,(concat user-emacs-directory "undo-history")))))

counsel swiper ivy 三件套

模糊搜索匹配

(use-package ivy
  :config
  (ivy-mode 1)
  (setq ivy-use-virtual-buffers t
        enable-recursive-minibuffers t)
  :bind ("C-s" . swiper))

diff-hl

(use-package diff-hl
  :config
  (global-diff-hl-mode)
  (diff-hl-margin-mode))

pyim

Emacs 内部的拼音输入法 ,还不错


TODO 美化

all-the-icons

(use-package all-the-icons)
(use-package all-the-icons-dired
  :config
  (add-hook 'dired-mode-hook 'all-the-icons-dired-mode))
(use-package all-the-icons-ivy
  :config
  (all-the-icons-ivy-setup))

需要安装字体

M-x all-the-icons-install-fonts

TODO 有趣的插件

emacs-nes

使用emacs模拟nes游戏机 https://github.com/gongo/emacs-nes(–)

(use-package nes
  :load-path "path" ;;https://github.com/gongo/emacs-nes
  )
;;M-x nes RET [FILE]

Nyan Cat for Emacs! Nyanyanyanyanyanyanyanyanyan!

parrot

魔性的鹦鹉https://github.com/dp12/parrot

(use-package parrot
  :config
  (parrot-mode))

epaint

telega.el

TODO 未完待续

Other posts