14 Commands
14.1 Vim key bindings
spacemacs 是基于 vim 模式的用户界面来导航和编辑文本。如果你不熟悉 vim 编辑文本的方式,你可以随时按下 SPC h T 来试试这个 evil-tutor 教程。
14.1.1 Escaping
spacemacs 通过快速按下 fd 键,使用 evil-escape 来轻松切换插入状态和正常状态。
fd 的选择使得能够使用相同的序列从 emacs 中的 “everything”:
- 从一切 evil 状态摆脱到正常的状态
- 从 evil-lisp-state 到正常状态
- 从 evil-iedit-state 到正常状态
- 放弃 evil 的命令
- 退出 minibuffer
- 放弃 isearch
- 退出 magit buffers
- 退出 help buffers
- 退出 apropos buffers
- 退出 ert buffers
- 退出 undo-tree buffer
- 退出 paradox
- 退出 gist-list menu
- 退出 helm-ag-edit
- 隐藏 neotree buffer
如果您发现自己处于 Spacemacs(SPC)或 vim键 绑定不起作用的缓冲区中,则可以使用它恢复到正常状态(例如,在 SPC SPC customize 按 fd 以使 SPC b b再次运行)。
这个序列可以在你的 〜/.spacemacs 中定制。例如将其设置为jj:
(defun dotspacemacs/user-config ()
(setq-default evil-escape-key-sequence "jj"))
注意:尽管 jj 或 jk 是 vim 用户的流行选择,但这些关键序列对于 spacemacs 并不是最优的。事实上,在 visual 状态下很快就会很快地按下,不经意地逃到 normal 状态。
14.1.2 Executing Vim and Emacs ex/M-x commands
Command | Key Binding |
---|---|
Vim (ex-command) | : |
Emacs (M-x) | SPC SPC |
可以使用 〜/.spacemacs 的变量 dotspacemacs-emacs-command-key 来更改 emacs 命令键 SPC(在leader key后面执行)。
14.1.3 Leader key
在 vim 模式之上(模式被称为 spacemacs 中的状态),有一个特殊的键被称为 leader 键,它曾经被按下给出一个全新的键盘层。leader 键是默认的 SPC(空格)。可以用变量 dotspacemacs-leader-key 来改变这个键。
14.1.4 Additional text objects
在spacemacs中定义了额外的文本对象:
Object | Description |
---|---|
a | an argument |
g | the entire buffer |
$ | text between $ |
* | text between * |
8 | text between / and / |
% | text between % |
\vert | text between \vert |
14.2为用户保留前缀命令
SPC o 和 SPC m o 是为用户保留的。在这些背后设置键绑定保证不会与 spacemacs 默认键绑定冲突。
例如:在你的 〜/.spacemacs 文件里放置(spacesmacs/ set-leader-keys“oc”'org-capture)到 dotspacemacs/user-config 中,以便能够使用 SPC o c 来运行组织模式捕获。
14.3 Completion
spacemacs 由两个增量完成和选择缩小框架之一驱动:helm(默认)或 ivy。要使用 ivy,请将 ivy layer 添加到启用的 layer 列表中。如果 ivy layer 没有启用,helm 将自动启用。(请注意,由于 Helm 是两者中较为成熟的,所以如果选择 ivy,某些功能可能无法使用。)
这些完成系统是 spacemacs 的中央控制塔,他们被用来管理缓冲区(buffers),项目(projects),搜索结果(search results),配置层(configuration),切换(toggles)和更多...
掌握你完成系统的选择将会使你成为一名超级 Spacemacs 用户。
14.3.1 Helm
不要犹豫来阅读Helm wiki 文档。
14.3.1.1 C-z and Tab switch
绑定到 C-z 的命令比绑定到 Tab 的命令更有用,所以交换它们是有意义的。这里也推荐。
14.3.1.2 Helm focus
如果您发现自己无法将焦点返回到 Helm(例如粗心的点击鼠标之后),请使用 SPC w b 将焦点返回到 minibuffer。
14.3.1.3 Helm transient state
Spacemacs 为 Helm 定义了一个临时状态,使其像 Vim's Unite 插件一样工作。
在 Helm 缓冲区中用 M-SPC 或 s-M-SPC 启动临时状态。
Key Binding | Description |
---|---|
M-SPC or s-M-SPC | initiate the transient state |
q | quit transient state |
TAB | switch to actions page and leave the transient state |
1 | execute action 0 |
2 | execute action 1 |
3 | execute action 2 |
4 | execute action 3 |
5 | execute action 4 |
6 | execute action 5 |
7 | execute action 6 |
8 | execute action 7 |
9 | execute action 8 |
0 | execute action 9 |
a | switch to actions page |
g | go to first candidate |
G | go to last candidate |
h | go to previous source |
j | select next candidate |
k | select previous candidate |
l | go to next source |
t | mark current candidate |
T | mark all candidates |
v | execute persistent action |
14.4 Discovering
14.4.1 Key bindings
14.4.1.1 Which-key
每次在正常模式下按下 SPC 键时都会显示帮助缓冲区。它列出了可用的键绑定及其相关的命令。
默认情况下,在键被按下后,which-key 缓冲器将被快速显示。你可以通过设置你喜欢的变量 dotspacemacs-which-key-delay 来改变延迟(值在秒)。
14.4.1.2 Helm describe key bindings
可以通过按 SPC ?. 搜索特定的键绑定。
通过使用 leader 键类型来将列表缩小到某些键绑定,例如这个正则表达式:SPC\ b,它将列出所有与缓冲区有关的绑定。
14.4.2 Getting help
Describe functions 是强大的 emacs introspection 命令来获取有关函数(functions),变量(variables),模式(modes)等信息,因此这些命令是绑定的:
Key Binding | Description |
---|---|
SPC h d b | describe bindings in a helm buffer |
SPC h d c | describe current character under point |
SPC h d d | describe current expression under point |
SPC h d f | describe a function |
SPC h d F | describe a face |
SPC h d k | describe a key |
SPC h d K | describe a keymap |
SPC h d l | copy last pressed keys that you can paste in gitter chat |
SPC h d m | describe current modes |
SPC h d p | describe a package (Emacs built-in function) |
SPC h d P | describe a package (Spacemacs layer information) |
SPC h d s | copy system information that you can paste in gitter chat |
SPC h d t | describe a theme |
SPC h d v | describe a variable |
其他 help 键绑定:
Key Binding | Description |
---|---|
SPC h SPC | discover Spacemacs documentation, layers and packages using helm |
SPC h i | search in info pages with the symbol at point |
SPC h k | show top-level bindings with which-key |
SPC h m | search available man pages |
SPC h n | browse emacs news |
在 help-mode 下导航键绑定: Key Binding| Description -- | -- g b |or [ go back (same as clicking on [back] button) g f |or ] go forward (same as clicking on [forward] button) g h |go to help for symbol under point
报告问题:
Key Binding | Description |
---|---|
SPC h I | Open Spacemacs GitHub issue page with pre-filled information |
SPC u SPC h I | Open Spacemacs GitHub issue page with pre-filled information - include last pressed keys |
注意:如果这两个绑定与 Backtrace 缓冲区打开使用,则自动包括 backtrace
14.4.3 Available layers
所有的层可以很容易地发现通过 helm-spacemacs-help 可访问的 SPC h SPC。 。
下面的 helm actions 是可用的:
- 默认:打开图层 readme.org
- 第二:打开图层 packages.el
14.4.3.1 Available packages in Spacemacs
helm-spacemacs-help 还列出了 Spacemacs 中可用的所有软件包。入口格式是(layer)包。如果你输入 flycheck,你将能够看到所有使用 flycheck 的 layers。
软件包中有以下 helm 操作:
- 默认:去包初始化函数
14.4.3.2 New packages from ELPA repositories
package-list-packages 是您可以在不同的 Elpa 软件仓库中浏览所有可用软件包的地方。可以从那里升级软件包,但不建议使用 spacemacs 启动页面上的 [Update Packages] 链接。
Spacemacs 使用 Paradox 而不是 package-list-packages 来列出可用的 ELPA 包。Paradox 增强了更好的反馈,新的过滤器和 github 信息,如星星数量的软件包列表缓冲区。也可以选择直接在缓冲区中打包。
重要的注意事项1:从 Paradox 安装一个新的包不会使其持久。要持久地安装软件包,必须将其明确添加到配置层。
重要说明2:不要从 Paradox 或 package-list-packages 更新软件包,因为它们不支持 Spacemacs 的回滚功能。
Key Binding | Description |
---|---|
SPC a k | launch paradox |
/ | evil-search |
f k | filter by keywords |
f r | filter by regexp |
f u | display only installed package with updates available |
h | go left |
H | show help (not accurate) |
j | go down |
k | go up |
l | go right |
L | show last commits |
n | next search occurrence |
N | previous search occurrence |
o | open package homepage |
r | refresh |
S P | sort by package name |
S S | sort by status (installed, available, etc…) |
S * | sort by Github stars |
v | visual state |
V | visual-line state |
x | execute (action flags) |
14.4.4 Toggles
helm-spacemacs-help 也是发现可用切换的中心位置。只显示切换源按下 C-l(或在 helm 临时状态下按 l)。
软件包中有以下 helm 操作:
- 默认值:打开/关闭
提示使用 SPC h l 来恢复最后的 helm 会话。快速打开和关闭切换是很方便的。
14.5 Navigating
14.5.1 Point/Cursor
导航是使用 Vi 键绑定 hjkl 来执行的。
Key Binding | Description |
---|---|
h | move cursor left |
j | move cursor down |
k | move cursor up |
l | move cursor right |
H | move cursor to the top of the screen |
L | move cursor to the bottom of the screen |
SPC j 0 | go to the beginning of line (and set a mark at the previous location in the line) |
SPC j $ | go to the end of line (and set a mark at the previous location in the line) |
SPC t - | lock the cursor at the center of the screen |
14.5.1.1 Smooth scrolling
smooth-scrolling 防止点到达屏幕的顶部或底部时跳转。它是默认启用的。
在 Windows 上,你可能想禁用它。禁用平滑滚动,将 〜/.spacemacs 中的 dotspacemacs-smooth-scrolling 变量设置为nil:
(setq-default dotspacemacs-smooth-scrolling nil)
您也可以使用 SPC t v 切换平滑滚动。
14.5.2 Vim motions with avy
Spacemacs 使用 avy 的 evil 的整合,使运行期间 avy 的调用。
例如,从当前行删除一组视觉线是有用的。在包含一些文本的缓冲区中尝试以下顺序:d SPC j l,然后选择一个 avy 候选项。
Key Binding | Description |
---|---|
SPC j b | go back to the previous location (before the jump) |
SPC j j | initiate avy jump char |
SPC j w | initiate avy jump word |
SPC j l | initiate avy jump line |
14.5.2.1 ace-link mode
类似于 avy,ace-link 允许用户通过两个按键跳转到 help-mode 和 info-mode 下的任何链接。
Key Binding | Description |
---|---|
o | 在 help-mode 和 info-mode 下启动 ace-link |
14.5.3 Unimpaired bindings
Spacemacs 带有一个内置的 tpope's vim-unimpaired 端口。
这个插件提供了几对括号映射,使用 [ 表示前一个,] 表示下一个。
KeyBindings | Description |
---|---|
[ SPC | Insert space above |
] SPC | Insert space below |
[ b | Go to previous buffer |
] b | Go to next buffer |
[ f | Go to previous file in directory |
] f | Go to next file in directory |
[ l | Go to the previous error |
] l | Go to the next error |
[ h | Go to the previous vcs hunk |
] h | Go to the next vcs hunk |
[ q | Go to the previous error |
] q | Go to the next error |
[ t | Go to the previous frame |
] t | Go to the next frame |
[ w | Go to the previous window |
] w | Go to the next window |
[ e | Move line up |
] e | Move line down |
[ p | Paste above current line |
] p | Paste below current line |
g p | Select pasted text |
14.5.4 Jumping, Joining and Splitting
SPC j 前缀用于跳转(jumping),连接(joining)和分割(splitting)。
14.5.4.1 Jumping
Key Binding | Description |
---|---|
SPC j 0 | go to the beginning of line (and set a mark at the previous location in the line) |
SPC j $ | go to the end of line (and set a mark at the previous location in the line) |
SPC j b | undo a jump (go back to previous location) |
SPC j d | jump to a listing of the current directory |
SPC j D | jump to a listing of the current directory (other window) |
SPC j f | jump to the definition of an Emacs Lisp function |
SPC j i | jump to a definition in buffer (imenu) |
SPC j I | jump to a definition in any buffer (imenu) |
SPC j j | jump to a character in the buffer (works as an evil motion) |
SPC j J | jump to a suite of two characters in the buffer (works as an evil motion) |
SPC j k | jump to next line and indent it using auto-indent rules |
SPC j l | jump to a line with avy (works as an evil motion) |
SPC j q | show the dumb-jump quick look tooltip |
SPC j u | jump to a URL in the current buffer |
SPC j v | jump to the definition/declaration of an Emacs Lisp variable |
SPC j w | jump to a word in the current buffer (works as an evil motion) |
14.5.4.2 Joining and splitting
Key Binding | Description |
---|---|
J | join the current line with the next line |
SPC j k | go to next line and indent it using auto-indent rules |
SPC j n | split the current line at point, insert a new line and auto-indent |
SPC j s | split a quoted string or s-expression in place |
SPC j S | split a quoted string or s-expression, insert a new line and auto-indent |
14.5.5 Window manipulation
14.5.5.1 Window manipulation key bindings
每个窗口都有一个 在mode-line 开始处显示的数字,可以使用 SPC number 快速访问。
Key Binding | Description |
---|---|
SPC 1 | go to window number 1 |
SPC 2 | go to window number 2 |
SPC 3 | go to window number 3 |
SPC 4 | go to window number 4 |
SPC 5 | go to window number 5 |
SPC 6 | go to window number 6 |
SPC 7 | go to window number 7 |
SPC 8 | go to window number 8 |
SPC 9 | go to window number 9 |
SPC 0 | go to window number 0 |
Windows操作命令(以 w 开头):
Key Binding | Description |
---|---|
SPC w = | balance split windows |
SPC w b | force the focus back to the minibuffer (usefull with helm popups) |
SPC w c | maximize/minimize a window and center it |
SPC w C | maximize/minimize a window and center it using ace-window |
SPC w d | delete a window |
SPC u SPC w d | delete a window and its current buffer (does not delete the file) |
SPC w D | delete another window using ace-window |
SPC u SPC w D | delete another window and its current buffer using ace-window |
SPC w t | toggle window dedication (dedicated window cannot be reused by a mode) |
SPC w f | toggle follow mode |
SPC w F | create new frame |
SPC w h | move to window on the left |
SPC w H | move window to the left |
SPC w j | move to window below |
SPC w J | move window to the bottom |
SPC w k | move to window above |
SPC w K | move window to the top |
SPC w l | move to window on the right |
SPC w L | move window to the right |
SPC w m | maximize/minimize a window (maximize is equivalent to delete other windows) |
SPC w M | swap windows using ace-window |
SPC w o | cycle and focus between frames |
SPC w p m | open messages buffer in a popup window |
SPC w p p | close the current sticky popup window |
SPC w r | rotate windows forward |
SPC w R | rotate windows backward |
SPC w s or SPC w - | horizontal split |
SPC w S | horizontal split and focus new window |
SPC w u | undo window layout (used to effectively undo a closed window) |
SPC w U | redo window layout |
SPC w v or SPC w / | vertical split |
SPC w V | vertical split and focus new window |
SPC w w | cycle and focus between windows |
SPC w W | select window using ace-window |
14.5.5.2 Window manipulation transient state
一个方便的窗口操作临时状态允许执行上面列出的大部分操作临时状态允许额外的行为,如窗口大小调整。
Key Binding | Description |
---|---|
SPC w . | initiate transient state |
? | display the full documentation in minibuffer |
0 | go to window number 0 |
1 | go to window number 1 |
2 | go to window number 2 |
3 | go to window number 3 |
4 | go to window number 4 |
5 | go to window number 5 |
6 | go to window number 6 |
7 | go to window number 7 |
8 | go to window number 8 |
9 | go to window number 9 |
/ | vertical split |
- | horizontal split |
[ | shrink window horizontally |
] | enlarge window horizontally |
{ | shrink window vertically |
} | enlarge window vertically |
d | delete window |
D | delete other windows |
g | toggle golden-ratio on and off |
h | go to window on the left |
j | go to window below |
k | go to window above |
l | go to window on the right |
H | move window to the left |
J | move window to the bottom |
K | move bottom to the top |
L | move window to the right |
o | focus other frame |
r | rotate windows forward |
R | rotate windows backward |
s | horizontal split |
S | horizontal split and focus new window |
u | undo window layout (used to effectively undo a closed window) |
U | redo window layout |
v | vertical split |
V | horizontal split and focus new window |
w | focus other window |
Any other key | leave the transient state |
14.5.5.3 Golden ratio
如果你像疯了一样调整窗口大小,你可能想尝试一下黄金比例。
黄金比例动态调整窗口的大小,取决于它们是否被选中。默认情况下,黄金比例关闭。
可以使用 SPC t g 来打开和关闭模式。
14.5.6 Buffers and Files
默认情况下,Spacemacs 使用 helm 来打开文件。
14.5.6.1 Buffers manipulation key bindings
缓冲区操作命令(以 b 开头):
Key Binding | Description |
---|---|
SPC TAB | switch to alternate buffer in the current window (switch back and forth) |
SPC b b | switch to a buffer using helm |
SPC b d | kill the current buffer (does not delete the visited file) |
SPC u SPC b d | kill the current buffer and window (does not delete the visited file) |
SPC b D | kill a visible buffer using ace-window |
SPC u SPC b D | kill a visible buffer and its window using ace-window |
SPC b C-d | kill buffers using a regular expression |
SPC b e | erase the content of the buffer (ask for confirmation) |
SPC b h | open spacemacs home buffer |
SPC b n | switch to next buffer avoiding special buffers |
SPC b m | kill all buffers except the current one |
SPC u SPC b m | kill all buffers and windows except the current one |
SPC b M | kill all buffers matching the regexp |
SPC b p | switch to previous buffer avoiding special buffers |
SPC b P | copy clipboard and replace buffer (useful when pasting from a browser) |
SPC b R | revert the current buffer (reload from disk) |
SPC b s | switch to the scratch buffer (create it if needed) |
SPC b w | toggle read-only (writable state) |
SPC b Y | copy whole buffer to clipboard (useful when copying to a browser) |
z f | Make current function or comments visible in buffer as much as possible |
14.5.6.2 Buffers manipulation transient state
一个方便的缓冲区操作瞬态允许通过打开的缓冲区快速循环并杀死它们。
Key Binding | Description |
---|---|
SPC b . | initiate transient state |
K | kill current buffer |
n | go to next buffer (avoid special buffers) |
N | go to previous buffer (avoid special buffers) |
Any other key | leave the transient state |
14.5.6.3 Special Buffers
不像 vim,emacs 创建了大多数人不需要看的缓冲区。一些例子是 messages 和 compile-log。Spacemacs 会尝试自动忽略无用的缓冲区。不过,您可能需要更改 spacemacs 将缓冲区标记为有用的方式。有关说明,请参阅特殊缓冲区 howto。
14.5.6.4 Files manipulations key bindings
文件操作命令(以f开头):
Key Binding | Description |
---|---|
SPC f b | go to file bookmarks |
SPC f c | copy current file to a different location |
SPC f C d | convert file from unix to dos encoding |
SPC f C u | convert file from dos to unix encoding |
SPC f D | delete a file and the associated buffer (ask for confirmation) |
SPC f E | open a file with elevated privileges (sudo edit) |
SPC f f | open file with helm |
SPC f F | try to open the file under point helm |
SPC f h | open binary file with hexl (a hex editor) |
SPC f j | jump to the current buffer file in dired |
SPC f J | open a junk file, in mode determined by the file extension provided (defaulting to fundamental mode), using helm (or ivy) |
SPC f l | open file literally in fundamental mode |
SPC f L | Locate a file (using locate) |
SPC f o | open a file using the default external program |
SPC f R | rename the current file |
SPC f s | save a file |
SPC f S | save all files |
SPC f r | open a recent file with helm |
SPC f t | toggle file tree side bar using NeoTree |
SPC f v d | add a directory variable |
SPC f v f | add a local variable to the current file |
SPC f v p | add a local variable to the first line of the current file |
SPC f y | show and copy current file absolute path in the minibuffer |
14.5.6.5 Emacs and Spacemacs files
方便的键绑定位于前缀 SPC f e 下,以便在 emacs 和 spacemacs 特定文件之间快速导航。
Key Binding | Description |
---|---|
SPC f e d | open the spacemacs dotfile (~/.spacemacs) |
SPC f e D | open ediff buffer of ~/.spacemacs and .spacemacs.template |
SPC f e f | discover the FAQ using helm |
SPC f e i | open the all mighty init.el |
SPC f e l | locate an Emacs library |
SPC f e R | resync the dotfile with spacemacs |
SPC f e v | display and copy the spacemacs version |
14.5.6.6 Browsing files with Helm
在 vim 和 hybrid 风格中,Spacemacs 重映射 Helm 查找文件中的导航,以保持在主行上。
Key Binding | Description |
---|---|
C-h | go up one level (parent directory |
C-H | describe key (replace C-h) |
C-j | go to previous candidate |
C-k | go to next candidate |
C-l | enter current directory |
14.5.7 Ido
Spacemacs 垂直显示 ido minibuffer 感谢 ido-vertical-mode.
基本的 ido 操作可以用 Ctrl 键完成:
Key Binding | Description |
---|---|
C- |
open a dired buffer |
M- |
open a dired buffer in terminal |
C-d | delete selected file (ask for confirmation) |
C-h | go to parent directory |
C-j | select next file or directory |
C-k | select previous file or directory |
C-l | open the selected file |
C-n | select next file or directory |
C-o | open selected file in other window |
C-p | select previous file or directory |
C-s | open selected file in a vertically split window |
C-t | open selected file in a new frame |
C-v | open selected file in a horizontally split window |
C-S-h | go to previous directory |
C-S-j or C-S-n | next history element |
C-S-k or C-S-p | previous history element |
C-S-l | go to next directory |
14.5.8 Ido transient state
Spacemacs 为 ido定义了一个临时装态。
在一个 ido 缓冲区中用 M-SPC 或 s-M-SPC 启动临时装态。
Key Binding | Description |
---|---|
M-SPC or s-M-SPC | initiate or leave the transient state |
? | display help |
e | open dired |
h | delete backward or parent directory |
j | next match |
J | sub directory |
k | previous match |
K | parent directory |
l | select match |
n | next directory in history |
o | open in other window |
p | previous directory in history |
q | quit transient state |
s | open in a new horizontal split |
t | open in other frame |
v | open in a new vertical split |
14.5.9 NeoTree file tree
Spacemacs 提供了一个快速和简单的方法来在 NeoTree 中导航未知的项目文件树。
切换 NeoTree 缓冲区按 SPC f t 或 SPC p t(后者打开 NeoTree,根目录设置为子弹项目根目录)。
NeoTree 窗口始终有数字 0,所以它不会移动其他窗口的当前数量。选择 NeoTree 窗口然后使用 spc 0。
支持 VSC 集成,文件颜色将根据当前状态而改变。用默认的 spacemacs-dark 主题:
- 绿色: 新文件
- 紫色: 修改过的文件
14.5.9.1 NeoTree navigation
导航以 hjkl 键为中心,希望能提供像 ranger 一样的快速导航体验:
Key Binding | Description |
---|---|
h | collapse expanded directory or go to parent node |
H | select previous sibling |
j | select next file or directory |
J | select next expanded directory on level down |
k | select previous file or directory |
K | select parent directory, when reaching the root change it to parent directory |
l or RET | expand directory |
L | select next sibling |
R | make a directory the root directory |
注意:点自动设置为节点的第一个字母,以获得更流畅的体验。
14.5.9.2 Opening files with NeoTree
默认情况下在最后一个活动窗口中打开一个文件。可以通过使用数字参数来选择要打开文件的窗口号,例如 2 l 或 2 RET 将打开窗口 2 中的当前文件。也可以使用 | 和 - :
Key Binding | Description |
---|---|
l or RET | open file in last active window |
# l or # RET | open file in window number # |
¦ | open file in an vertically split window |
- | open file in an horizontally split window |
14.5.9.3 Other NeoTree key bindings
Key Binding | Description |
---|---|
TAB | toggle stretching of the buffer |
c | create a node |
d | delete a node |
gr | refresh |
s | toggle showing of hidden files |
q or fd | hide NeoTree buffer |
r | rename a node |
? | show help |
14.5.9.4 NeoTree mode-line
mode-line 具有以下格式 [x/y] d(d:a,f:b)其中:
- x是当前所选文件或目录的索引
- y当前目录中项目(文件和目录)的总数
- d当前目录的名称
- a当前目录中的目录数量
- b当前目录中的文件数量
14.5.9.5 NeoTree Source Control Integration
如果你想 NeoTree 显示源控制信息,你可以使用 neo-vc-integration 设置。它是一个包含可能值的列表:
Setting | Description |
---|---|
face | 通过改变文件/目录名称的颜色来显示信息。 |
char | 在文件/目录名称的左侧显示带有字符的信息。 |
默认是 nil(不显示源控制信息),这是推荐的。
例如,
(setq neo-vc-integration 'face)
注意:目前,不建议将其设置为除 nil 之外的任何值。否则,源码树越大,速度越慢。有关更多信息,请参阅 https://github.com/jaypei/emacs-neotree/issues/126。
14.5.9.6 NeoTree Theme
你可以使用设置 neo-theme 来改变 NeoTree 主题。可能的值是:
Setting | Description |
---|---|
classic | 使用图标显示项目 - 只适用于 gui 模式。 |
ascii | 最简单的样式,它将使用x, - 来显示折叠状态。 |
arrow | 使用 unicode 箭头来显示折叠状态。 |
nerd | 使用 NERDTree 缩进模式和箭头。 |
默认是 classic。 使用 nerd ,如果你想在 VIM 看起来最像 NERDTree。例如:
(setq neo-theme 'nerd)
14.5.10 Bookmarks
书签可以在文件的任何地方设置。书签是持久的。他们是非常有用的跳转到/打开一个已知的项目。Spacemacs 使用 helm-bookmarks 来管理它们。
按下:SPC f b,打开当前书签的 helm 窗口
然后在 helm-bookmarks 缓冲区中:
Key Binding | Description |
---|---|
C-d | 删除选中的书签 |
C-e | 编辑选定的书签 |
C-f | 切换文件名位置 |
C-o | 在另一个窗口中打开选定的书签 |
要保存新的书签,只需输入书签的名称,然后按下 RET。
14.5.11 DocView mode
doc-view-mode 是一个内置的主要模式来查看 DVI,PostScript (PS), PDF,OpenDocument 和 Microsoft Office 文档。
Key Binding | Description |
---|---|
/ | search forward |
? | search backward |
+ | enlarge |
- | shrink |
gg | go to first page |
G | go to last page |
gt | go to page number |
h | previous page |
H | adjust to height |
j | next line |
k | previous line |
K | kill proc and buffer |
l | next page |
n | go to next search occurrence |
N | go to previous search occurrence |
P | fit page to window |
r | revert |
W | adjust to width |
C-d | scroll down |
C-k | kill proc |
C-u | scroll up |
C-c C-c | toggle display text and image display |
C-c C-t | open new buffer with doc's text contents |
14.6 Auto-saving
14.6.1 Frequency of auto-saving
默认情况下,每300个字符和每30秒的空闲时间执行文件自动保存,可以通过分别将变量 auto-save-inteval 和 auto-save-timeout 设置为新值来更改这些文件。
14.6.2 Location of auto-saved files
修改文件的自动保存可以在原始文件本身或缓存目录中原位执行(在这种情况下,原始文件将保持未保存状态)。默认情况下,Spacemacs 自动将文件保存在缓存目录中。
修改位置将变量 dotspacemacs-auto-save-file-location 设置为 original 或 cache。
本地文件将自动保存在缓存目录中的一个名为站点的子目录中,而远程文件(即通过 TRAMP 编辑的文件)将自动保存在名为 dist 的子目录中。
14.6.3 Disable auto-save
禁用自动保存将变量 dotspacemacs-auto-save-file-location 设置为nil。
您可以通过调用命令 auto-save-mode 来切换自动保存在缓冲区中。
14.7 Searching
14.7.1 With an external tool
Spacemacs 可以与不同的搜索工具连接,如:
Spacemacs 中的搜索命令在 SPC s 前缀下组织,下一个键是要使用的工具,最后一个键是范围。比如 SPC s a b 会使用 ag 在所有打开的缓冲区中搜索。
如果最后一个键(确定范围)是大写的,那么点下的当前区域或符号将被用作搜索的默认输入。例如 SPC s a B 将在符号下搜索符号(如果没有活动区域)。
如果省略了工具键,则会自动选择默认工具进行搜索。这个工具对应于在列表 dotspacemacs-search-tools 的系统上找到的第一个工具,默认顺序是 ag,pt,ack,然后是 grep 。例如,如果在系统中没有找 到 ag,spc 将使用 pt 在打开的缓冲区中搜索。
工具键是:
Tool | Key |
---|---|
ag | a |
grep | g |
ack | k |
pt | t |
可用的范围和相应的键是:
Scope | Key |
---|---|
打开缓冲区 | b |
文件在给定的目录中 | f |
当前的项目 | p |
可以通过双击序列的第二个键在当前文件中进行搜索,例如 SPC s a a 将使用 ag 在当前文件中搜索。
Notes:
- ag 和 pt 被优化用于源代码控制库中,但是它们也可以在任意目录中使用。
- 也可以通过在 helm 缓冲区中标记它们来一次搜索多个目录。
当心如果你使用 pt,TCL parser tools 也会安装一个名为 pt 的命令行工具。
14.7.1.1 Useful key bindings
Key Binding | Description |
---|---|
F3 | 在 helm 或 ivy 缓冲区中,将结果保存到常规缓冲区 |
SPC r l | 恢复上一个完成缓冲区 |
SPC r s or SPC s l | 恢复搜索缓冲区(完成或转换的搜索缓冲区) |
SPC s ` | 回到以前用 helm-ag 达到的地方 |
Prefix argument | 将要求文件扩展名 |
当结果保存在 f3 的常规缓冲区中时,该缓冲区支持通过与 Spacemacs 的下一个错误和先前错误绑定( SPC e n 和 SPC e p)以及错误瞬态(SPC e)进行浏览。
14.7.1.2 Searching in current file
Key Binding | Description |
---|---|
SPC s s | 用第一个找到的工具搜索 |
SPC s S | 用默认输入搜索第一个找到的工具 |
SPC s a a | ag |
SPC s a A | ag with default input |
SPC s g g | grep |
SPC s g G | grep with default input |
14.7.1.3 Searching in all open buffers visiting files
Key Binding | Description |
---|---|
SPC s b | 用第一个找到的工具搜索 |
SPC s B | 用默认输入搜索第一个找到的工具 |
SPC s a b | ag |
SPC s a B | ag with default text |
SPC s g b | grep |
SPC s g B | grep with default text |
SPC s k b | ack |
SPC s k B | ack with default text |
SPC s t b | pt |
SPC s t B | pt with default text |
14.7.1.4 Searching in files in an arbitrary directory
Key Binding | Description |
---|---|
SPC s f | 用第一个找到的工具搜索 |
SPC s F | 用默认输入搜索第一个找到的工具 |
SPC s a f | ag |
SPC s a F | ag with default text |
SPC s g f | grep |
SPC s g F | grep with default text |
SPC s k f | ack |
SPC s k F | ack with default text |
SPC s t f | pt |
SPC s t F | pt with default text |
14.7.1.5 Searching in a project
Key Binding | Description |
---|---|
SPC / or SPC s p | 用第一个找到的工具搜索 |
SPC * or SPC s P | 用默认输入搜索第一个找到的工具 |
SPC s a p | ag |
SPC s a P | ag with default text |
SPC s g p | grep with default text |
SPC s k p | ack |
SPC s k P | ack with default text |
SPC s t p | pt |
SPC s t P | pt with default text |
提示:也可以在项目中搜索,而无需事先打开文件。在一个给定的项目中使用 SPC p p 然后 C-s 来直接搜索它,就像使用 SPC s p 一样。
14.7.1.6 Searching the web
Key Binding | Description |
---|---|
SPC s w g | 在 emacs 中获得谷歌建议。在浏览器中打开google结果。 |
SPC s w w | 在 emacs 中获得维基百科建议。在浏览器中打开维基百科页面。 |
14.7.2 Persistent highlighting
Spacemacs 使用 evil-search-highlight-persist 来保持搜索到的表达式直到下一次搜索。也可以通过按 SPC s c 或执行 ex 命令来清除突出显示:noh。
14.7.3 Highlight current symbol
Spacemacs 支持按需高亮显示当前符号(由 auto-highlight-symbol mode 提供),并添加瞬态以轻松导航并重命名此符号。
也可以将飞行中的导航范围更改为:
- buffer
- function
- visible area
在点按 SPC s h 下启动当前符号的突出显示。
高亮的符号之间的导航可以通过以下命令完成:
Key Binding | Description |
---|---|
* | 在当前符号上启动导航暂态,并向前跳转 |
# | 在当前符号上启动导航暂态并向后跳转 |
SPC s e | 编辑所有出现的当前符号(/) |
SPC s h | 高亮显示当前符号及其在当前范围内的所有出现 |
SPC s H | 转到上次搜索到的最后一个突出显示的符号 |
SPC t h a | 在 ahs-idle-interval 秒后切换点下的符号自动高亮 |
在'spacemacs'中高亮显示符号瞬态:
Key Binding | Description |
---|---|
e | edit occurrences (*) |
n | go to next occurrence |
N | go to previous occurrence |
d | go to next definition occurrence |
D | go to previous definition occurrence |
r | change range (function, display area, whole buffer) |
R | go to home occurrence (reset position to starting occurrence) |
Any other key | leave the navigation transient state |
(*)使用 iedit 或 auto-highlight-symbol 的默认实现
minibuffer 中的瞬态文本显示如下信息:
<M> [6/11]* press (n/N) to navigate, (e) to edit, (r) to change range or (R)
for reset
其中
- M:当前的范围模式
- :整个缓冲区范围
:当前的显示范围 :当前的功能范围 - x:当前高亮显示的事件的索引
- y:发生的总次数
- *:如果至少有一个当前不可见的情况出现。
14.7.4 Visual Star
用 evil-visualstar 你可以搜索下一个出现的当前选择。
它与 expand-region 绑定相结合非常有用。
注意:如果当前状态不是 visual 状态,那么按 * 使用自动高亮符号及其瞬态状态。
14.7.5按语义列出符号
使用 helm 的 helm-semantic-or-imenu 命令可以在缓冲区中的符号之间快速导航。
列出一个缓冲区的所有符号按:SPC s j
14.7.6 Helm-swoop
这与 moccur 非常相似,它显示了一个 helm 缓冲区,其中包含所有出现的单词。您可以实时更改搜索查询并轻松地在它们之间导航。
您甚至可以直接在 helm 缓冲区中编辑事件,并将修改应用到缓冲区。
Key Binding | Description |
---|---|
SPC s s | execute helm-swoop |
SPC s S | execute helm-multi-swoop |
SPC s C-s | execute helm-multi-swoop-all |
14.8编辑
14.8.1粘贴文本
14.8.1.1粘贴瞬态
可以通过将变量 dotspacemacs-enable-paste-transient-state 设置为 t 来启用粘贴瞬变状态。默认情况下它被禁用。
当启用暂态时,再次按下 p 将会替换粘贴的文字与先前在 kill (ring) 上被 yanked(copied)的文字。
例如,如果复制 foo 和 bar,然后按 p 将粘贴文本栏,再次按 p 将用 foo 替换 bar。
Key Binding | Description |
---|---|
p or P | 粘贴文本之前或之后的文本,并启动粘贴瞬态 |
p | 在瞬态:用先前复制的粘贴文本替换 |
P | 在瞬态中:用下一个复制的文本替换粘贴文本 |
. | 粘贴相同的文本,并离开瞬态 |
Any other key | 离开瞬态 |
14.8.1.2自动缩进粘贴文本
默认情况下,任何粘贴的文本都将被自动缩进。粘贴文本不加缩进使用通用的参数。
可以通过在您的 dotspacemacs/user-config 函数的变量 spacemacs-indent-sensitive-modes 中添加 major-modes 来禁用特定 major-mode 的自动缩进。
14.8.2文本操作命令
文本相关的命令(以x开头):
Key Binding | Description |
---|---|
SPC x a & | align region at & |
SPC x a ( | align region at ( |
SPC x a ) | align region at ) |
SPC x a , | align region at , |
SPC x a . | align region at . (for numeric tables) |
SPC x a : | align region at : |
SPC x a ; | align region at ; |
SPC x a = | align region at = |
SPC x a a | align region (or guessed section) using default rules |
SPC x a c | align current intendation region using default rules |
SPC x a r | align region using user-specified regexp |
SPC x a m | align region at arithmetic operators (+-*/) |
SPC x a ¦ | align region at ¦ |
SPC x c | count the number of chars/words/lines in the selection region |
SPC x d w | delete trailing whitespaces |
SPC x g l | set languages used by translate commands |
SPC x g t | translate current word using Google Translate |
SPC x g T | reverse source and target languages |
SPC x j c | set the justification to center |
SPC x j f | set the justification to full |
SPC x j l | set the justification to left |
SPC x j n | set the justification to none |
SPC x j r | set the justification to right |
SPC x J | move down a line of text (enter transient state) |
SPC x K | move up a line of text (enter transient state) |
SPC x l s | sort lines |
SPC x l u | uniquify lines |
SPC x o | use avy to select a link in the frame and open it |
SPC x O | use avy to select multiple links in the frame and open them |
SPC x t c | swap (transpose) the current character with the previous one |
SPC x t w | swap (transpose) the current word with the previous one |
SPC x t l | swap (transpose) the current line with the previous one |
SPC x u | set the selected text to lower case |
SPC x U | set the selected text to upper case |
SPC x w c | count the number of occurrences per word in the select region |
SPC x w d | show dictionary entry of word from wordnik.com |
SPC x TAB | indent or dedent a region rigidly |
14.8.3文本插入命令
文本插入命令(从 i 开始):
Key binding | Description |
---|---|
SPC i l l | insert lorem-ipsum list |
SPC i l p | insert lorem-ipsum paragraph |
SPC i l s | insert lorem-ipsum sentence |
SPC i u | Search for Unicode characters and insert them into the active buffer. |
SPC i U 1 | insert UUIDv1 (use universal argument to insert with CID format) |
SPC i U 4 | insert UUIDv4 (use universal argument to insert with CID format) |
SPC i U U | insert UUIDv4 (use universal argument to insert with CID format) |
14.8.4 Smartparens Strict mode
Smartparens有一个严格的模式,如果结果不平衡,可以防止删除括号。
这种模式可能会让新手感到沮丧,这就是为什么它没有默认启用。
可以通过使用 〜/.spacemacs 的变量 dotspacemacs-smartparens-strict-mode 来轻松启用所有编程模式。
(setq-default dotspacemacs-smartparens-strict-mode t)
14.8.5 缩放(Zooming)
14.8.5.1 文本
当前缓冲区的字体大小可以通过以下命令进行调整:
Key Binding | Description |
---|---|
SPC z x + | scale up the font and initiate the font scaling transient state |
SPC z x = | scale up the font and initiate the font scaling transient state |
SPC z x - | scale down the font and initiate the font scaling transient state |
SPC z x 0 | reset the font size (no scaling) and initiate the font scaling transient state |
+ | increase the font size |
= | increase the font size |
- | decrease the font size |
0 | reset the font size |
Any other key | leave the font scaling transient state |
请注意,只有当前缓冲区的文本被缩放,其他缓冲区,模式行和小缓冲区不受影响。使用缩放框架绑定缩放框架的全部内容(请参阅下一节)。
14.8.5.2 框架(Frame)
您可以使用以下命令放大和缩小框架的全部内容:
Key Binding | Description |
---|---|
SPC z f + | 放大框架内容并启动框架缩放瞬态 |
SPC z f = | 放大框架内容并启动框架缩放瞬态 scaling transient state |
SPC z f - | 缩小框架内容并启动框架缩放瞬态 |
SPC z f 0 | 重置框架内容大小并启动框架缩放瞬态 |
+ | 放大 |
= | 放大 |
- | 缩小 |
0 | 重置缩放 |
任何其他的键 | 保持缩放框架的瞬态状态 |
14.8.6增加/减少数字
Spacemacs 使用 evil-number 来轻松地增加或减少数字。
Key Binding | Description |
---|---|
SPC n + | increase the number under point by one and initiate transient state |
SPC n - | decrease the number under point by one and initiate transient state |
在瞬态中:
Key Binding | Description |
---|---|
+ | increase the number under point by one |
- | decrease the number under point by one |
Any other key | leave the transient state |
提示:你可以通过使用前缀参数多次增加或减少一个值(即,10 SPC n + 将点数加10)。
14.8.7 拼写检查
通过在你的 dotfile 中包含 spell checking layer 来启用拼写检查。
键绑定列在 layer 文档中。
14.8.8区域选择
evil 支持 Vi 中所有的 Visual modes
14.8.8.1 扩大区域(Expand-region)
Spacemacs 通过 expand-regin mode 添加了另一种 Visual mode。
Key Binding | Description |
---|---|
SPC v | 启动 expand-regin 模式,然后... |
v | 用一个语义单位来扩展该区域 |
V | 通过一个语义单元来收缩区域 |
r | 将区域重置为初始选择 |
ESC | 离开 expand-regin 模式 |
14.8.8.2缩进文本对象(Indent text object)
evil-indent-plus 以下文本对象可用:
- ii - 内部缩进:周围的文本块具有相同的缩进
- iI - 上面和缩进:ii + 上面的行用不同的缩进
- iJ - 上面,下面和缩进+:ii +下面的行用不同的缩进
还有一个包含空白的变体.例子(| 表示点):
(while (not done)
(messa|ge "All work and no play makes Jack a dull boy."))
(1+ 41)
- vii 会选择带消息的行
- viI 会选择整个while循环
- viJ 将选择整个片段
14.8.9 区域缩小(Region narrowing)
缓冲区的显示文本可以用命令缩小(从 n 开始):
Key Binding | Description |
---|---|
SPC n f | 将缓冲区缩小到当前的功能 |
SPC n p | 将缓冲区缩小到可见页面 |
SPC n r | 将缓冲区缩小到选定的文本 |
SPC n w | 扩大,即再次显示整个缓冲区 |
14.8.10 用iedit替换文本(Replacing text with iedit)
Spacemacs 通过 evil-iedit-state 使用强大的 iedit 模式来快速编辑多个符号或选项。
evil-iedit-state 定义了两个新的 evil stataes:
- iedit state
- iedit-insert state
这些状态的颜色代码是红色的。
evil-iedit-state 与 expand-region 也有很好的集成,通过按 e 可快速编辑当前选定的文本。
14.8.10.1 iedit states 键绑定( iedit states key bindings)
- 状态转换
- Key Binding | From | To ---|---|--- SPC s e |normal or visual |iedit e |expand-region |iedit ESC |iedit |normal C-g |iedit |normal fd |iedit |normal ESC |iedit-insert |iedit C-g |iedit-insert |normal fd |iedit-insert |norma
总结,在 iedit-insert 状态,你必须按两次 ESC 回到 normal 状态。你也可以随时按 C-g 或 fd 回到 normal 状态。
注意:切换到 insert 状态的 evil 命令会切换到 iedit-insert 状态。
- 在 iedi t状态 iedit 状态从 normal 状态继承,下面的键绑定是特定于 iedit 状态的。
Key Binding | Description |
---|---|
ESC | go back to normal state |
TAB | toggle current occurrence |
0 | go to the beginning of the current occurrence |
$ | go to the end of the current occurrence |
# | prefix all occurrences with an increasing number (SPC u to choose the starting number). |
A | go to the end of the current occurrence and switch to iedit-insert state |
D | delete the occurrences |
F | restrict the scope to the function |
gg | go to first occurrence |
G | go to last occurrence |
I | go to the beginning of the current occurrence and switch to iedit-insert state |
J | increase the editing scope by one line below |
K | increase the editing scope by one line above |
L | restrict the scope to the current line |
n | go to next occurrence |
N | go to previous occurrence |
p | replace occurrences with last yanked (copied) text |
S | (substitute) delete the occurrences and switch to iedit-insert state |
V | toggle visibility of lines with no occurrence |
U | Up-case the occurrences |
C-U | down-case the occurrences |
注意:0,$,a和我有默认的 vim 行为在事件之外使用。
- 在 iedit-insert 状态
Key Binding | Description |
---|---|
ESC go | back to iedit state |
C-g go | back to normal state |
14.8.10.2 例子
- 手动选择几个字然后替换:v w w SPC s e S "toto" ESC ESC
- 将文本附加到两行的单词上:v i w SPC s e J i "toto" ESC ESC
- 用 expand-region 替代符号:SPC v v e S "toto" ESC ESC
- 用扩展区域替换符号与被抽出(复制)的文本:SPC v e p ESC ESC
14.8.11 替换几个文件中的文本
如果您安装了 ag ,pt 或 ack ,则可以通过 helm-ag 来替换多个文件中的文本。
假设你想在当前项目中用 bar 替换所有的 foo 事件:
- 用 SPC / 开始搜索
- 用 C-c C-e 编辑模式进入
- 用 SPC s e 去发生并进入 iedit state
- 编辑事件,然后离开 iedit state
- 按 C-c C-c
注意:在 Spacemacs 中,尽管 helm-ag 的名字与 ack 和 pt 一起工作(但不与 grep 一起)。
14.8.12 重命名目录中的文件
可以使用 helm 会话中的 wdired 批量重命名目录中的文件:
- 使用 SPC f f 浏览目录
- 用 C-c C-e 进入 wdired
- 编辑文件名并使用 C-c C-c 确认更改
- 使用 C-c C-k 放弃所有更改
14.8.13 评论
评论由 evil-nerd-commenter 处理,它被绑定到下面的键。
Key Binding | Description |
---|---|
SPC ; | comment operator |
SPC c l | comment lines |
SPC c L | invert comment lines |
SPC c p | comment paragraphs |
SPC c P | invert comment paragraphs |
SPC c t | comment to line |
SPC c T | invert comment to line |
SPC c y | comment and yank |
SPC c Y | invert comment and yank |
提示:有效地评论一行使用组合 SPC ; SPC y
14.8.14 正则表达式
Spacemacs 使用包 pcre2el 来操作正则表达式。在使用 Emacs Lisp 缓冲区时它很有用,因为它允许轻松地将 PCRE( Perl 兼容 RegExp )转换为 Emacs Regexp 或 rx。它也可以用来“解释”一个 PCRE RegExp 以 rx 形式表示的点。
键绑定以 SPC x r 开始并具有以下助记符结构:
- SPC x r
- spc x r 做我的意思
Key Binding | Function |
---|---|
SPC x r / | Explain the regexp around point with rx |
SPC x r ' | Generate strings given by a regexp given this list is finite |
SPC x r t | Replace regexp around point by the rx form or vice versa |
SPC x r x | Convert regexp around point in rx form and display the result in the minibuffer |
SPC x r c | Convert regexp around point to the other form and display the result in the minibuffer |
SPC x r e / | Explain Emacs Lisp regexp |
SPC x r e ' | Generate strings from Emacs Lisp regexp |
SPC x r e p | Convert Emacs Lisp regexp to PCRE |
SPC x r e t | Replace Emacs Lisp regexp by rx form or vice versa |
SPC x r e x | Convert Emacs Lisp regexp to rx form |
SPC x r p / | Explain PCRE regexp |
SPC x r p ' | Generate strings from PCRE regexp |
SPC x r p e | Convert PCRE regexp to Emacs Lisp |
SPC x r p x | Convert PCRE to rx form |
14.8.15 删除文件
删除配置为将删除的文件发送到系统垃圾箱。
在 OS x 上需要垃圾程序。它可以通过 homebrew 以下命令与自制软件一起安装:
$ brew install trash
要禁用垃圾箱,您可以在 〜/.spacemacs 中将变量 delete-by-moving-to-trash 设置为 nil。
14.8.16 编辑 lisp 代码
lisp 代码的编辑由 evil-lisp-state 提供。
命令会将当前状态设置为 lisp 状态,其中可以重复不同的命令组合,而无需按下 SPC k。
当处于 lisp 状态时,mode-line 的颜色变为粉红色。
例子:
- 在正常状态下啜饮三次:SPC k 3 s
- 在圆括号中包装一个符号,然后啜饮两次:SPC k w 2 s
注意:lisp 状态命令可以在任何模式下使用!试试看。
14.8.16.1 lisp 键绑定
- lisp状态键绑定 这些命令自动切换到 lisp 状态。
Key Binding | Function |
---|---|
SPC k % | evil jump item |
SPC k : | ex command |
SPC k ( | insert expression before (same level as current one) |
SPC k ) | insert expression after (same level as current one) |
SPC k $ | go to the end of current sexp |
SPC k ` k | hybrid version of push sexp (can be used in non lisp dialects) |
SPC k ` p | hybrid version of push sexp (can be used in non lisp dialects) |
SPC k ` s | hybrid version of slurp sexp (can be used in non lisp dialects) |
SPC k ` t | hybrid version of transpose sexp (can be used in non lisp dialects) |
SPC k 0 | go to the beginning of current sexp |
SPC k a | absorb expression |
SPC k b | forward barf expression |
SPC k B | backward barf expression |
SPC k c | convolute expression |
SPC k ds | delete symbol |
SPC k Ds | backward delete symbol |
SPC k dw | delete word |
SPC k Dw | backward delete word |
SPC k dx | delete expression |
SPC k Dx | backward delete expression |
SPC k e | unwrap current expression and kill all symbols after point |
SPC k E | unwrap current expression and kill all symbols before point |
SPC k h | previous symbol |
SPC k H | go to previous sexp |
SPC k i | switch to insert state |
SPC k I | go to beginning of current expression and switch to insert state |
SPC k j | next closing parenthesis |
SPC k J | join expression |
SPC k k | previous opening parenthesis |
SPC k l | next symbol |
SPC k L | go to next sexp |
SPC k p | paste after |
SPC k P | paste before |
SPC k r | raise expression (replace parent expression by current one) |
SPC k s | forward slurp expression |
SPC k S | backward slurp expression |
SPC k t | transpose expression |
SPC k u | undo |
SPC k U | got to parent sexp backward |
SPC k C-r | redo |
SPC k v | switch to visual state |
SPC k V | switch to visual line state |
SPC k C-v | switch to visual block state |
SPC k w | wrap expression with parenthesis |
SPC k W | unwrap expression |
SPC k y | copy expression |
- emacs lisp 特定的键绑定
Key Binding | Function |
---|---|
SPC m e $ | go to end of line and evaluate last sexp |
SPC m e b | evaluate buffer |
SPC m e c | evaluate current form (a def or a set) |
SPC m e e | evaluate last sexp |
SPC m e f | evaluate current defun |
SPC m e l | go to end of line and evaluate last sexp |
SPC m e r | evaluate region |
Key Binding | Function |
---|---|
SPC m g g | go to definition |
SPC m g G | go to definition in another window |
SPC m h h | describe elisp thing at point (show documentation) |
SPC m t b | execute buffer tests |
SPC m t q | ask for test function to execute |
14.8.17 鼠标使用情况
有一些添加的鼠标功能为行号边距设置(如果显示):
- 在行号边界中单击可直观地选择整个行
- 拖过行号边距可以直观地选择区域
- 双击行号边界,直观地选择当前的代码块
14.9管理项目
在 Spacemacs 中的项目是用 projectile 来管理的。在 projectile 项目中是隐式定义的,例如,当在文件树中遇到 .git 存储库或 .projectile 文件时找到项目的根。
只要有可能,就使用 Helm。
在项目中搜索查看 project searching.
projectile 命令以 p 开头:
Key Binding | Description |
---|---|
SPC p ' | open a shell in project's root (with the shell layer) |
SPC p ! | run shell command in project's root |
SPC p & | run async shell command in project's root |
SPC p % | replace a regexp |
SPC p a | toggle between implementation and test |
SPC p b | switch to project buffer |
SPC p c | compile project using projectile |
SPC p d | find directory |
SPC p D | open project root in dired |
SPC p f | find file |
SPC p F | find file based on path around point |
SPC p g | find tags |
SPC p C-g | regenerate the project's etags / gtags |
SPC p h | find file using helm |
SPC p I | invalidate the projectile cache |
SPC p k | kill all project buffers |
SPC p o | run multi-occur |
SPC p p | switch project |
SPC p r | open a recent file |
SPC p R | replace a string |
SPC p t | open NeoTree in projectile root |
SPC p T | test project |
SPC p v | open project root in vc-dir or magit |
SPC / | search in project with the best search tool available |
SPC s p | see search in project |
SPC s a p | run ag |
SPC s g p | run grep |
SPC s k p | run ack |
SPC s t p | run pt |
注意windows用户:启用快速索引 GNU find 或 Cygwin find 必须在你的 PATH 中。
14.10 寄存器(Registers)
对各个寄存器的访问命令以r开头:
Key Binding | Description |
---|---|
SPC r e | show evil yank and named registers |
SPC r m | show marks register |
SPC r r | show helm register |
SPC r y | show kill ring |
14.11错误处理
Spacemacs 使用 Flycheck 实时提供错误反馈。检查仅在保存时间默认情况下执行。
错误管理命令(以e开头):
Key Binding | Description |
---|---|
SPC t s | toggle flycheck |
SPC e c | clear all errors |
SPC e h | describe a flycheck checker |
SPC e l | toggle the display of the flycheck list of errors/warnings |
SPC e n | go to the next error |
SPC e p | go to the previous error |
SPC e v | verify flycheck setup (useful to debug 3rd party tools configuration) |
SPC e . | error transient state |
下一个/上一个错误绑定和错误瞬态可用于浏览来自 flycheck 的错误以及来自编译缓冲区的错误,甚至可以用来支持 emacs 的下一个错误 API 的任何事情。这包括例如已经被保存到单独的缓冲区的搜索结果。
自定义边缘位图:
Symbol | Description |
---|---|
Error | |
warning | |
Info |
14.12 编译
Spacemacs 绑定了一些命令来支持编译项目。
Key Binding | Description |
---|---|
SPC c c | use helm-make via projectile |
SPC c C | compile |
SPC c d | close compilation window |
SPC c k | kill compilation |
SPC c m | helm-make |
SPC c r | recompile |
14.13 模式(Modes)
4.13.1 主模式 leader 键(Major Mode leader key)
特定于当前主要模式的键绑定以spc m开头。为方便起见,默认情况下会设置一个称为主模式 leader 键的快捷键,这可以节省一笔宝贵的击键。
可以通过在 〜/.spacemacs 中定义变量 dotspacemacs-major-mode-leader-key 来更改主模式的 leader 键。例如在列表中设置键:
(setq-default dotspacemacs-major-mode-leader-key "<tab>")
14.13.2 Helm
Spacemacs 将 hjkl 导航添加到 helm 缓冲区:
Key Binding | Description |
---|---|
C-h | go to next source |
C-H | describe key (replace C-h) |
C-j | go to previous candidate |
C-k | go to next candidate |
C-l | same as return |
14.14 emacs服务器
Spacemacs 在启动时启动服务器。这个服务器在你关闭你的 emacs 窗口时会被终止。
14.14.1 连接到 emacs 服务器
您可以使用 emacsclient 从终端在 emacs 中打开一个文件。使用 emacsclient -c 在 Emacs GUI 中打开文件。使用 emacsclient -t 在终端内的 Emacs 中打开文件。
如果您希望您的 Linux/OS X 系统默认使用 Emacs 作为任何提示,您需要将其设置为您的 shell 配置,例如,〜/.bashrc 或 〜/.zshrc:
export EDITOR="emacsclient -c"
请注意,如果您使用 OS X,则可能需要引用您的 GUI Emacs 附带的 emacsclient,例如:
export EDITOR="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -c"
提示:记得在 emacs 中编辑文件后使用:wq 或 C-x#。
有关更多详细信息,请参阅官方 Emacs 手册中的 Emacs 作为服务器。
14.15 保持服务器开着
通过在 〜/spacemacs 中将变量 dotspacemacs-persistent-server 设置为 t 关闭 Emacs,可以使服务器保持活动状态。
(setq-default dotspacemacs-persistent-server t)
当此变量设置为 t 时,退出 Emacs 并终止服务器的唯一方法是使用以下绑定:
Keybinding | Description |
---|---|
SPC q | Quit Emacs and kill the server, prompt for changed buffers to save |
SPC q Q | Quit Emacs and kill the server, lose all unsaved changes. |
SPC q r | Restart both Emacs and the server, prompting to save any changed buffers |
SPC q s | Save the buffers, quit Emacs and kill the server |
SPC q z | Kill the current frame |
14.16 故障排除(Troubleshoot)
14.16.1 Loading fails
如果在加载过程中发生错误,mode-line 将变为红色,并且错误应该在启动缓冲区中内联显示。Spacemacs 应该仍然可用;如果不是,那么用 emacs --debug-init 重新启动 Emacs,并用 backtrace 打开一个 Github issue。
14.16.2 升级/降级 Emacs 版本
为了确保软件包能够针对您安装的新 Emacs 版本进行正确编译,请务必使用 SPC SPC spacemacs/recompile-elpa 运行交互式命令 spacemacs/recompile-elpa。