# emacs.d **Repository Path**: devbin/emacs.d ## Basic Information - **Project Name**: emacs.d - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-06-20 - **Last Updated**: 2023-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README * Emacs ** 介绍 这份 =Emacs= 配置基于 [[https://github.com/seagle0128/.emacs.d][Centaur Emacs]] 定制而来,增加了 =Vim(Evil)= 的支持,使用 [[https://github.com/syl20bnr/spacemacs][Spacemacs]] 的快捷键绑定。因为之前一直使用 [[https://github.com/syl20bnr/spacemacs][Spacemacs]] 所以习惯了它的快捷键。 ** Screenshot [[file:./screenshot.png]] ** 安装 #+begin_src sh mv .emacs.d .emacs.d.bak git clone --recurse-submodules -j8 https://github.com/devbins/.emacs.d.git #+end_src =straight= 版本见 [[https://github.com/devbins/.emacs.d/tree/straight][straight]] 分支。 ** Buffer | 快捷键 | 描述 | 对应函数 | |---------+---------------------+--------------------------| | 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= | ** Git | 快捷键 | 描述 | 对应函数 | |---------+---------------+-----------------------------| | 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 mode *** 在 Org-mode 中使用截图功能,并插入到当前文件 =org-screenshot= *** Org Agenda | 快捷键 | 描述 | 对应函数 | |-----------+-----------------+-----------------| | SPC a o a | 打开 Org Agenda | =org-agenda-list= | | SPC m C p | 打开 pomodoro | =org-pomodoro= | *** Org Mode | 快捷键 | 描述 | 对应函数 | |-----------+---------------+------------------| | 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= | *** Org protocol 在浏览器中,把下面的网址存为标签,在需要的网页中打开标签,两个选一个就行。 #+begin_src js 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); #+end_src 或者 #+begin_src js javascript:location.href='org-protocol://capture?template=B&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)+'&body='+encodeURIComponent(window.getSelection()) #+end_src *** Org Archive | 快捷键 | 描述 | 对应函数 | |-----------+------------------------------------------+------------------------| | SPC m s a | 切换 =Archive= tag | =org-toggle-archive-tag= | | SPC m s A | 把有 =Archive= tag 的移动到 =Archive= 文件中 | =org-archive-subtree= | *** Org Roam | 快捷键 | 描述 | 对应函数 | |-----------+------------------------+---------------------------| | SPC m r l | 打开 Org roam | =org-roam= | | SPC m r b | 切换到 Org roam buffer | =org-roam-switch-to-buffer= | ** lsp *** C/C++ **** Server 安装 ***** Mac #+begin_src sh 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 #+end_src ***** Arch #+begin_src sh sudo pacman -S ccls #+end_src ***** Ubuntu 20.04LTS #+begin_src sh 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 #+end_src **** debug #+begin_src sh sudo pacman -S node unzip gdb lldb #+end_src =M-x dap-gdb-lldb-setup= *** Go **** Server 安装 #+begin_src sh go install golang.org/x/tools/gopls@latest #+end_src **** debug #+begin_src sh go install github.com/go-delve/delve/cmd/dlv@latest #+end_src *** Rust 安装好 =Rust= 之后,需要安装 RLS(Rust Language Server) #+begin_src sh brew install rust-analyzer cargo install rust-script #+end_src *** Python **** Server 安装 ***** jedi #+begin_src sh pip install -U jedi-language-server #+end_src ***** pyright #+begin_src sh npm install -g pyright #+end_src **** debug #+begin_src sh pip install debugpy #+end_src *** CMake #+begin_src sh pip install cmake-language-server #+end_src *** Json #+begin_src sh npm i -g vscode-json-languageserver #+end_src *** Kotlin 格式化工具 #+begin_src sh brew install ktlint #+end_src *** Web **** Javascript/Typescript #+begin_src sh brew install deno #+end_src **** html/css #+begin_src sh npm install -g vscode-langservers-extracted #+end_src *** YAML #+begin_src sh npm install -g yaml-language-server #+end_src ** go #+begin_src sh 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 #+end_src ** vterm #+begin_src sh sudo pacman -S libvterm #+end_src ** ctags *** Mac #+begin_src sh brew install --HEAD universal-ctags/universal-ctags/universal-ctags #+end_src *** Linux #+begin_src sh 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 #+end_src ** rtags *** Mac #+begin_src sh 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 #+end_src *** Linux(Manjaro) #+begin_src sh 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 #+end_src ** 播放音乐 音乐播放依赖 =mplayer= ,使用之前需要安装,可以通过如下方式安装 #+begin_src sh sudo pacman -S mplayer # arch brew install mplayer # mac #+end_src ** 设置代理 在 =~/.emacs.d/custom.el= 中加入 #+begin_src emacs-lisp (setq http-proxy "127.0.0.1:1080" socks-proxy "127.0.0.1" socks-port 1086) #+end_src ** PDF | 快捷键 | 描述 | 对应函数 | |--------+------------------------+---------------------------------| | C-w | 复制选中的内容到剪切板 | =pdf-view-kill-ring-save= | | j | 往下滚动 | =pdf-view-next-line-or-next-page= | | k | 往上滚动 | =pdf-view-previous-line-or-previous-page= | ** 安装字体 *** Mac #+begin_src sh brew tap homebrew/cask-fonts brew install --cask font-jetbrains-mono #+end_src *** Manjaro #+begin_src sh sudo pacman -S --noconfirm ttf-jetbrains-mono ttf-fira-code ttf-symbola #+end_src ** native-comp 支持 *** Mac #+begin_src sh 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 #+end_src 如果启动直接报错,需要使用 =emacs -Q= 打开,让后通过 =load-library= 把配置文件加载进来,等待编译完成,就可以使用了。 也可以手动调用 =(native-compile-async "~/.emacs.d" 'recursively)= 进行编译 **** error invoke gcc driver 使用如下代码设置环境变量,然后使用 =load-library= 加载配置文件。 #+begin_src emacs-lisp (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") #+end_src *** ArchLinux #+begin_src sh sudo pacman -S emacs-git # gcc emacs sudo pacman -S emacs-native-comp-git #+end_src *** Ubuntu #+begin_src sh sudo snap install emacs --edge --classic #+end_src ** 最小启动配置 #+begin_src sh emacs -Q -l init-mini.el #+end_src ** sbcl *** Mac #+begin_src sh brew install sbcl #+end_src ** 使用Emacs编辑浏览器TextArea - 安装 [[https://chrome.google.com/webstore/detail/ghosttext/godiecgffnchndlihlpaajjcplehddca/related][GhostText - Chrome Web Store]] ** FAQ *** json-readtable-error 122 在 path 中没有找到 =Python= ,更新 =env= *** void-function org-outline-overlay-data 进入 =~/.emacs.d/elpa/= 删除 =expand-region= 后重启两次 Emacs , 第一次会碰到 =smart-region= 的问题 *** org-copy-subtree: Invalid function: org-preserve-local-variables #+begin_src sh cd ~/.emacs.d/elpa find org*/*.elc -print0 | xargs -0 rm #+end_src *** Failed to verify signature memory-usage-0.2.el.sig 执行以下两条指令 =M-: (setq package-check-signature nil) RET= =M-x package-install memory-usage RET= ** Thanks - [[https://github.com/seagle0128/.emacs.d][Centaur Emacs]] A Fancy and Fast Emacs Configuration - [[https://github.com/syl20bnr/spacemacs][Spacemacs]] A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!