这份 Emacs
配置基于 Centaur Emacs 定制而来,增加了 Vim(Evil)
的支持,使用 Spacemacs 的快捷键绑定。因为之前一直使用 Spacemacs 所以习惯了它的快捷键。
mv .emacs.d .emacs.d.bak
git clone --recurse-submodules -j8 https://github.com/devbins/.emacs.d.git
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC b b | 切换 buffer | ivy-switch-buffer |
SPC b d | 删除 buffer | kill-this-buffer |
SPC b p | 上一个 buffer | previous-buffer |
SPC b n | 下一个 buffer | next-buffer |
SPC b s | 打开 scratch buffer | switch-to-scratch-buffer |
SPC b t | 打开 imenu-list | imenu-list-smart-toggle |
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC f d | 删除当前文件 | delete-this-file |
SPC f R | 重命名文件 | rename-this-file |
SPC f t | 打开 treemacs | treemacs |
SPC f o | 适用外部程序打开当前文件/文件夹 | open-file-or-directory-in-external-app |
无 | 把当前文件转为 UTF-8 编码 | save-buffer-as-utf8 |
无 | 把 GBK 编码转为 UTF-8 编码 | save-buffer-gbk-as-utf8 |
无 | 在 finder 中显示(macOS) | reveal-in-osx-finder |
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC g s | 选择 Git 仓库 | magit-status |
SPC g t | git 时光机 | git-timemachine |
SPC g b | git blame | magit-blame |
SPC g p | git messenger | git-messenger:popup-message |
org-screenshot
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC a o a | 打开 Org Agenda | org-agenda-list |
SPC m C p | 打开 pomodoro | org-pomodoro |
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC m p | 设置优先级 | org-priority |
SPC m i p | 设置 property | org-set-property |
SPC m i e | 设置 effort | org-set-effort |
SPC m o T | 设置 tags | org-set-tags |
SPC a o c | 捕获内容 | org-capture |
在浏览器中,把下面的网址存为标签,在需要的网页中打开标签,两个选一个就行。
javascript:window.open('org-protocol://capture?template=B'+ '&url='+encodeURIComponent(window.location.href)+ '&title='+encodeURIComponent(document.title)+ '&body='+encodeURIComponent(window.getSelection()));window.resizeTo(0,0); window.moveTo(0,window.screen.availHeight+10);
或者
javascript:location.href='org-protocol://capture?template=B&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&body='+encodeURIComponent(window.getSelection())
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC m s a | 切换 Archive tag | org-toggle-archive-tag |
SPC m s A | 把有 Archive tag 的移动到 Archive 文件中 | org-archive-subtree |
快捷键 | 描述 | 对应函数 |
---|---|---|
SPC r a | 同步 org roam 节点 | org-roam-db-autosync-mode |
SPC r f | 查找 org roam 节点 | org-roam-node-find |
SPC r i | 插入 org roam 节点 | org-roam-node-insert |
SPC r l | 给节点设置别名 | org-roam-alias-add |
brew install ccls
手动安装
brew install cmake llvm
git clone --depth=1 --recursive https://github.com/MaskRay/ccls
cd ccls
cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/local/Cellar/llvm/10.0.1/lib/cmake -DUSE_SYSTEM_RAPIDJSON=off
cmake --build Release --target install
sudo pacman -S ccls
sudo apt install cmake zlib1g-dev libncurses-dev clang libclang-dev
git clone --depth=1 --recursive https://github.com/MaskRay/ccls
cd ccls
cmake -H. -BRelease -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH=/usr/lib/llvm-7 \
-DLLVM_INCLUDE_DIR=/usr/lib/llvm-7/include \
-DLLVM_BUILD_INCLUDE_DIR=/usr/include/llvm-7/
cmake --build Release
sudo pacman -S node unzip gdb lldb
M-x dap-gdb-lldb-setup
brew install clang-format
.clang-format
example base llvm
--- BasedOnStyle: LLVM IndentWidth: 4 AccessModifierOffset: -4 ---
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest
安装好 Rust
之后,需要安装 RLS(Rust Language Server)
rustup component add rust-anzlyer
pip install basedpyright
npm i -g pyright
如果和 Anaconda
一起使用,需要在对应的 env
中安装,也就是每个 env
都要安装一遍。
pip install ruff-lsp
pip install debugpy
pip install cmake-language-server
npm i -g vscode-json-languageserver
格式化工具
brew install ktlint
brew install deno
npm -i g typescript typescript-language-server
npm install -g vscode-langservers-extracted
npm i -g @vue/language-server
npm install -g yaml-language-server
go install honnef.co/go/tools/cmd/staticcheck@latest
go install github.com/zmb3/gogetdoc@latest
go install github.com/josharian/impl@latest
go install github.com/cweill/gotests/...@latest
go install github.com/davidrjenni/reftools/cmd/fillstruct@latest
go install github.com/fatih/gomodifytags@latest
sudo pacman -S libvterm
brew install --HEAD universal-ctags/universal-ctags/universal-ctags
git clone https://github.com/universal-ctags/ctags.git
cd ctags
./autogen.sh
./configure --prefix=/usr/local # defaults to /usr/local
make
make install # may require extra privileges depending on where to install
brew install llvm
export PATH=/usr/local/opt/llvm/bin:$PATH
git clone --recursive https://github.com/Andersbakken/rtags.git
cd rtags
mkdir build && cd build
CC=clang CXX=clang++ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=on ..
make
git clone --recursive https://github.com/Andersbakken/rtags.git
cd rtags
mkdir build && cd build
export GCC_VERSION=11.1.0 # 需要根据你的版本修改,可以使用 g++ --version 查看
export CXXFLAGS="-include /usr/include/c++/${GCC_VERSION}/limits"
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=on ..
make
brew install shellcheck
gptel
启动一个 buffer
用来对话,标题就是提示词,写好后使用 C-c RET
来发送给大模型进行推理
使用 C-u
前缀,然后再调用,可以进行参数设置,包括选择大模型,设置指令,系统消息等等。
gptel-send
会在当前 buffer
进行推理,然后在当前光标出进行插入推理结果
音乐播放依赖 mplayer
,使用之前需要安装,可以通过如下方式安装
sudo pacman -S mplayer # arch
brew install mplayer # mac
在 ~/.emacs.d/custom.el
中加入
(setq http-proxy "127.0.0.1:1080"
socks-proxy "127.0.0.1"
socks-port 1086)
快捷键 | 描述 | 对应函数 |
---|---|---|
C-w | 复制选中的内容到剪切板 | pdf-view-kill-ring-save |
j | 往下滚动 | pdf-view-next-line-or-next-page |
k | 往上滚动 | pdf-view-previous-line-or-previous-page |
brew tap homebrew/cask-fonts
brew install --cask font-jetbrains-mono
sudo pacman -S --noconfirm ttf-jetbrains-mono ttf-fira-code ttf-symbola
brew reinstall gcc libgccgit
brew install emacs-plus@28 --with-ctags --with-dbus --with-mailutils --with-no-frame-refocus --with-xwidgets --with-no-titlebar --with-native-comp
如果启动直接报错,需要使用 emacs -Q
打开,让后通过 load-library
把配置文件加载进来,等待编译完成,就可以使用了。
也可以手动调用 (native-compile-async "~/.emacs.d" 'recursively)
进行编译
使用如下代码设置环境变量,然后使用 load-library
加载配置文件。
(setenv "LIBRARY_PATH" "/usr/local/opt/gcc/lib/gcc/10:/usr/local/opt/gcc/lib/gcc/10/gcc/x86_64-apple-darwin20/10.2.0")
sudo pacman -S emacs-git
# gcc emacs
sudo pacman -S emacs-native-comp-git
sudo snap install emacs --edge --classic
emacs -Q -l init-mini.el
brew install sbcl
SPC s p
搜索内容,这时候按下M-n
可以获取光标下的单词C-c C-e
导出搜索结果到 grep bufferembark-export
C-c C-w
切换grep-mode
到wgrep-mode
- 替换
C-c C-c
保存更改,C-c C-k
取消更改
【傻瓜教程】Emacs 定身术之 consult+embark+wgrep 跨文件批量搜索替换 - Emacs-general - Emacs China
text -- -g *.py
只显示 py
中匹配的
text -- -g !*.py
显示除了 py
中匹配的
text !text1
有 text1
的不显示
需要把 Python
降到 3.10
,不能使用 3.11
在 path 中没有找到 Python
,更新 env
进入 ~/.emacs.d/elpa/
删除 expand-region
后重启两次 Emacs , 第一次会碰到 smart-region
的问题
cd ~/.emacs.d/elpa
find org*/*.elc -print0 | xargs -0 rm
执行以下两条指令
M-: (setq package-check-signature nil) RET
M-x package-install memory-usage RET
- Centaur Emacs A Fancy and Fast Emacs Configuration
- Spacemacs A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it’s Emacs and Vim!