这份 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 installsudo pacman -S cclssudo 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 Releasesudo pacman -S node unzip gdb lldbM-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@latestgo install github.com/go-delve/delve/cmd/dlv@latest安装好 Rust 之后,需要安装 RLS(Rust Language Server)
rustup component add rust-anzlyerpip install basedpyrightnpm i -g pyright如果和 Anaconda 一起使用,需要在对应的 env 中安装,也就是每个 env 都要安装一遍。
pip install ruff-lsppip install debugpypip install cmake-language-servernpm i -g vscode-json-languageserver格式化工具
brew install ktlintbrew install deno
npm -i g typescript typescript-language-servernpm install -g vscode-langservers-extractednpm i -g @vue/language-servernpm install -g yaml-language-servergo 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@latestconda create -n xxx
conda activate xxxpip install basedpyright
pip install ruff-lsppoetry new xxxconda-env-activate 选择刚刚创建的环境
sudo pacman -S libvtermbrew install --HEAD universal-ctags/universal-ctags/universal-ctagsgit 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 installbrew 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 ..
makegit 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 ..
makebrew install shellcheckgptel 启动一个 buffer 用来对话,标题就是提示词,写好后使用 C-c RET 来发送给大模型进行推理
使用 C-u 前缀,然后再调用,可以进行参数设置,包括选择大模型,设置指令,系统消息等等。
gptel-send 会在当前 buffer 进行推理,然后在当前光标出进行插入推理结果
- 安装 llvm
brew install llvm - 配置环境变量
查看 llvm 安装位置
brew --prefix --installed llvmexport PATH="[llvm 安装位置]/bin:$PATH"
- 传递参数
- 命令行参数使用 args,
:args ["-c" "code"] - 环境变量使用 env,
:env ["OPEN_API_KEY" "xxxx"]
- 命令行参数使用 args,
- 运行
M-x dape - 调试前顺便编译一下
lldb-dap :args ["-a" "123"] compile "llvm-g++ -g不要忘记-g,少了就没有调试信息,就不能调试了
- 安装 vscode-js-debug
到Releases · microsoft/vscode-js-debug下载最新的 Release
mkdir -p ~/.emacs.d/debug-adapters tar -xvzf js-debug-dap-<version>.tar.gz -C ~/.emacs.d/debug-adapters
- 运行
M-x dape
音乐播放依赖 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-monosudo pacman -S --noconfirm ttf-jetbrains-mono ttf-fira-code ttf-symbolabrew 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-gitsudo snap install emacs --edge --classicemacs -Q -l init-mini.elbrew install sbclSPC s p搜索内容,这时候按下M-n可以获取光标下的单词C-c C-e导出搜索结果到 grep bufferembark-exportC-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!
