Spacemacs使用
Spacemacs快捷键
光标行位置
| zt | evil-scroll-line-to-top | 顶部 |
| zz | evil-scroll-line-to-center | 居中 |
| zb | evil-scroll-line-to-bottom | 底部 |
折叠快捷键
快捷键 | 函数 | 说明 |
---|---|---|
za | evil-toggle-fold | 触发 |
zc | evil-close-fold | 折叠 |
zo | evil-open-fold | 展开 |
zm | evil-close-folds | 折叠全部 |
zr | evil-open-folds | 展开全部 |
跳转
| ,gd | xref-find-definitions | |
| ,gb | xref-pop-marker-stack | |
| ,gr | xref-find-references | |
| SPC-cl | comment-or-uncomment-region | 注释 |
Spacemacs快捷键
Spacemacs 默认用 projectile 探测工作项目
若是git项目,Spacemacs发现有.git目录,就会认为是一个Spacemacs Project
spacemacs离线安装
https://edward852.github.io/post/spacemacs离线安装/
Spacemacs使用指南
https://code-monkey.top/2016/12/26/spacemacs-usage/
Spacemacs入门总结
https://everettjf.github.io/2017/03/11/spacemacs-tutorial/
spacemacs 使用gdb
https://blog.csdn.net/csfreebird/article/details/71171559
spacemacs用git layer管理代码
https://blog.csdn.net/csfreebird/article/details/52871162
Pythoner 的 spacemacs 入门指北
https://blog.csdn.net/zlyf1101/article/details/101930070
记录 Org 和 Markdown 的一些异同
https://blog.csdn.net/Homography/article/details/106161787
DevOps Spacemacs Org
https://www.dazhuanlan.com/dayexiangcai/topics/1162658
Spacemacs
Spacemacs文档 | |
---|---|
SPC h SPC | 调出所有帮助文档 |
SPC h l | 列出spacemacs layers |
SPC h d | 查看describe相关文档 |
SPC h d f | 查看指定函数的帮助文档 |
SPC h d b | 查看指定快捷键绑定的命令 |
SPC h d v | 查看指定变量的帮助文档 |
| SPC f e d | 打开.spacemacs配置文件 |
| SPC f e R | 重载配置 |
| SPC q R | 重启Emacs |
| SPC q q | 杀掉进程 |
| SPC z x | 修改字体大小 |
| SPC t 8 | 高亮显示第80列以后的任何字符|
| SPC t f | 显示填充列(默认填充列设置为80)|
| SPC t h h | 切换当前行的高亮显示|
| SPC t h i | 切换突出显示缩进级别|
| SPC t l | 切换截断线|
| SPC t L | 切换视线|
| SPC t n | 切换行号|
| SPC t v | 切换平滑滚动|
| SPC T n | 切换到在 dotspacemacs-themes 中列出的下一个主题 |
| SPC T s | 从 helm buffer 选择一个主题 |
| SPC T t | 切换工具栏|
| SPC T T | 切换帧透明度并进入透明度瞬态状态 |
| SPC T m | 切换菜单栏|
| SPC T ~ | 在空行的边缘显示 ~|
| SPC T F | 全屏切换帧|
| SPC T f | 切换显示边缘|
| SPC T M | 切换帧最大化|
| SPC t m m | minor mode 指示器开启关闭|
which-key 插件提供快捷键绑定菜单
spc-spc-helm-imenu 查看单个文件结构大纲
Project
项目 | |
---|---|
SPC p f | 查找项目文件并快速打开 |
SPC p R | 在项目中替换字符串,根据输入「匹配」和「替换」字符串,然后输入替换方式 |
E 修改刚才输入的「替换」字符串
RET 表示不作处理
y 只替换一出
Y 替换全部
n / delete 跳过当前匹配项,匹配下一项
^ 跳过当前匹配项,匹配上一项
, 替换当前项,但不移动光标
SPC p p 切换项目
SPC p D 在dired中打开项目根目录
Search
查找 | |
---|---|
SPC f g | 搜索相关函数名 |
Window
窗口快捷键 | |
---|---|
SPC w /或v | 垂直分割 |
SPC w -或s | 水平分割 |
SPC w + | 窗口布局切换 |
SPC w j,k,h,l | 移动光标到上下左右窗口 |
SPC w J,K,H,L | 移动光标到最上下左右窗口 |
SPC N | 快速切换到窗口N |
SPC w d | 删除窗口 |
SPC w m | 当前窗口最大化 |
SPC w c | buffer居中模式 |
SPC w C | buffer居中并满屏 |
SPC w f | 窗口联动跟随模式 |
Buffer
Buffer快捷键 | |
---|---|
SPC b n | 下一个buffer |
SPC b p | 上一个buffer |
SPC b N | 新buffer |
SPC b P | 拷贝剪切板内容覆盖整体buffer内容 |
SPC b d | 删除此buffer |
SPC b m | 删除其它buffer |
SPC b k | 关闭当前buffer |
SPC b h | 跳转到home起始页面 |
SPC b W | buffer列表 工作站 |
SPC b b | 列出所有buffer helm-mini |
File
File文件操作 | |
---|---|
SPC f f | 使用helm查找文件 |
SPC f L | 全局搜索,使用helm-local再当前系统查找文件 |
SPC f r | 最近打开的文件列表 |
SPC f R | 重命名当前文件 |
SPC f s | 保存文件 |
SPC f S | 保存所有打开的Buffer |
SPC / 用合适的工具搜索内容,相当于grep /ack/ag/pt xxx
SPC s c 清除搜索高亮
SPC SPC 搜索当前文件
SPC f t 打开当前文件所在目录
SPC p t 打开当前文件所在根目录
SPC n 跳转窗口
SPC j = 对齐,相当于beautify
shell
SPC ' 打开/关闭shell
C-k 前一条shell命令
C-j 后一条shell命令
快速翻页
快速翻页 (在 spacemacs 0.1xx 中没测试过)
SPC n , 或 . 或 < 或 > 进入 scrolling transient state
然后重复按 , 或 . 或 < 或 > 即可,
按其他键会退出 scrolling transient state
, 向上翻一页
. 向下翻一页
< 向上翻半页
向下翻半页
让 Spacemacs 支持 EditorConfig
EditorConfig 是一个配置文件,一般位于项目的根目录,它可以让不同的编辑器和 IDE 都按照相同的格式来格式化代码,对于项目的维护者来说是一个很好的工具。
Spacemacs 也支持 EditorConfig,只需要在配置文件中添加配置即可。下面以 OS X 为例,通过以下步骤即可让 Spacemacs 支持 EditorConfig:
$ brew install editorconfig
在 ~/.spacemacs 中的 dotspacemacs-additional-packages 中添加 editorconfig:
dotspacemacs-additional-packages
'( editorconfig )
创建 .editorconfig 文件,写上自己喜欢的配置。
在 ~/.spacemacs 中的 docspacemacs/user-config 中加入 (editorconfig-mode 1)。
Git 集成 (必须先配置 Magit 的使用)
Git 是一个优秀的版本控制工具,我们可以在 .spacemacs 的 dotspacemacs-configuration-layers 列表中添加 git 就可以集成 git 了。
下面是一些常用的 git 命令,前缀为 g。
spacemacs 0.1xx:
Git Magit
git init SPC g i
git status SPC g s
git add SPC g s 弹出层选中文件然后按 s
git add currentFile SPC g S
git commit SPC g c c
git push SPC g P 按提示操作
git checkout xxx SPC g C
git checkout -- xxx SPC g s 弹出层选中文件然后按 u
git log SPC g l l
spacemacs 0.2xx:
大部分命令整合到 SPC g s 中,需要按照提示执行命令
在 commit 时,我们输入完 commit message 之后,需要按 C-c C-c 来完成 commit 操作,也可以按 C-c C-k 来取消 commit
设置文件默认的主模式
虽然我们可以通过 M-x 来设置文件的主模式,但这种方式只是在单独修改某个文件的主模式时好用,如果要把所有同类型的文件都改成其他模式,这种方式的效率就太低了。
在 Spacemacs 中,我们可以用 auto-mode-alist 来设置某一类文件默认的主模式。
我们只需要在 ~/.spacemacs 中的 user-config 中加入下面代码即可:
(add-to-list 'auto-mode-alist '("\.js\'" . react-mode))
上面代码会用 react-mode 打开所有 .js 文件。
设置主模式的 hook
主模式的 hook 是一个 elisp 函数,这个函数会在主模式加载时调用,常用于为特定的主模式自定义配置。
如我想在 js2-mode 中作出如下配置:
移除检查分号的提示 (否则当行末缺少了分号的时候,会给出烦人的提示)
支持 Node.js 内建函数 (否则当出现 require, module 之类的时候会提示未定义变量)
设置缩进为 2
这时候我可以通过如下方式来设置:
;; hooks
(defun my-js-mode-hook ()
(setq js2-basic-offset 2)
(setq js-indent-level 2)
(setq js2-include-node-externs t)
(setq js2-strict-missing-semi-warning nil))
(add-hook 'js2-mode-hook 'my-js-mode-hook)
Emacs 服务器
Spacemacs 会在启动时启动服务器,这个服务器会在 Spacemacs 关闭的时候被杀掉。
使用 Emacs 服务器
当 Emacs 服务器启动的时候,我们可以在命令行中使用 emacsclient 命令:
$ emacsclient -c 用 Emacs GUI 来打开文件
$ emacsclient -t 用命令行中 Emacs 来打开文件
杀掉 Emacs 服务器
除了关闭 Spacemacs 之外,我们还可以用下面的命令来杀掉 Emacs 服务器:
$ emacsclient -e '(kill-emacs)'
持久化 Emacs 服务器
我们可以持久化 Emacs 服务器,在 Emacs 关闭的时候,服务器不被杀掉。只要设置 ~/.spacemacs 中 dotspacemacs-persistent-server 为 t 即可。
但这种情况下,我们只可以通过以下方式来杀掉服务器了:
SPC q q 退出 Emacs 并杀掉服务器,会对已修改的 Buffer 给出保存的提示。
SPC q Q 同上,但会丢失所有未保存的修改。
Spacemacs配置
一. 安装 Spacemacs
git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
# 重启 emacs 自动安装,安装过程建议选择 vim 和 helm,spacemacs在安装过程中会在创建`~/.spacemacs`文件
二. 配置Spacemacs
Spacemacs的配置文件~/.spacemacs
结构
(defun dotspacemacs/layers() ...) ;; 对layer进行配置
(defun dotspacemacs/init() ...) ;; 初始化变量
(defun dotspacemacs/user-env() ...) ;; environment variables setup
(defun dotspaceamcs/user-init() ...) ;; 自定义初始化,如加入镜像源
(defun dotspaceamcs/user-load() ...) ;; library to load while dumping
(defun dotspacemacs/user-config() ...) ;; 自定义配置
(defun dotspacemacs/emacs-custiom-settings() ...) ;; Emacs custom settings
以上函数执行顺序:init -> user-init -> layers -> user-config
1. dotspacemacs/init函数
;; This function is called at the very beginning of Spacemacs startup, before layer configuration
dotspacemacs-themes '() ;; 设置主题
dotspacemacs-default-font '() ;; 配置字体
dotspacemacs-line-numbers ' ;; 设置行号显示风格
2. dotspacemacs/user-init函数
;; Initialization for user code.
;; 如果下载插件速度太慢可以考虑使用清华镜像源
(setq configuration-layer--elpa-archives
'(("melpa-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")
("org-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/org/")
("gnu-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")))
3. dotspacemacs/layers函数
- dotspacemacs-configuration-layers
变量中添加需要配置的 layer,指定加载和配置 Spacemacs中 layer - dotspacemacs-additional-packages变量
添加不包含在layer中的包,dotspacemacs-additional-packages
变量中添加想要安装的包,下次启动 emacs 时就会自动安装了,如果需要对包进行更多的配置,那么可以创建自己的 layer,然后在自己创建的 layer 中引入 - dotspacemacs-frozen-packages变量
- dotspacemacs-excluded-packages变量
删除想要安装的包
4. dotspacemacs/user-config函数
三. 自定义 layer
用命令 configuration-layer/create-layer
创建layer
默认位置为~/.emacs.d/private/
,可以通过修改 dotspacemacs-configuration-layer-path '("~/.spacemacs/layers")
来改变 layer位置。
注:创建自定义 layer后要添加变量 dotspacemacs-configuration-layers中
dotspacemacs-configuration-layers
'(
;; ----------------------------------------------------------------
;; Example of useful layers you may want to use right away.
;; Uncomment some layer names and press `SPC f e R' (Vim style) or
;; `M-m f e R' (Emacs style) to install them.
;; ----------------------------------------------------------------
;; auto-completion
;; better-defaults
emacs-lisp
(html :variables
html-enable-lsp t
css-enable-lsp t
;;html-enable-leex-support t
web-fmt-tool 'web-beautify)
(javascript :variables
javascript-backend 'lsp
javascript-lsp-hinter nil
javascript-fmt-tool 'web-beautify
javascript-import-tool 'import-js)
(python :variables
python-backend 'lsp
python-lsp-server 'pyright
python-formatter 'yapf)
;; git
helm
lsp
markdown
multiple-cursors
;; org
(shell :variables
shell-default-height 30
shell-default-shell 'eshell
shell-default-position 'bottom)
spell-checking
syntax-checking
;; version-control
treemacs)
pip install rope
pip install jedi
## flake8 for code checks
pip install flake8
## importmagic for automatic imports
pip install importmagic
## and autopep8 for automatic PEP8 formatting
pip install autopep8
## and yapf for code formatting
pip install yapf
## install virtualenv for jedi
pip install virtualenv virtualenvwrapper
后端引擎
# Html layer
npm i -g vscode-css-languageserver-bin
npm i -g vscode-html-languageserver-bin
# Javascript
npm install -g jshint
npm install -g import-js
npm i -g typescript javascript-typescript-langserver
# python
npm install -g pyright
# web-beautify
npm install -g js-beautify