SpaceVim - 让你的vim变得更加高效和强大

SpaceVim 使用指南

Gitter Build Status Build status codecov Version GPLv3 License

GitHub watchers GitHub stars GitHub forks Twitter Follow

welcome-page

项 目 主 页: https://spacevim.org/cn/

Github 地址 : https://github.com/SpaceVim/SpaceVim

码云地址:https://gitee.com/spacevim/SpaceVim

SpaceVim 是一个社区驱动的模块化 Vim IDE,以模块的方式组织管理插件以及相关配置,
为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱即用的Vim-IDE。

使用过程中遇到问题或者有什么功能需求可以在 github 提交 issue,这将更容易被关注和修复。或者加入中文聊天室:

以下是近几周的开发汇总:

Throughput Graph

776646-20170914214850891-1759077085.png

安装

在安装 SpaceVim 之前,你需要确保电脑上已经安装了 gitcurl。这两个工具用来
下载插件以及字体。

如果在终端中使用 vim 或者 neovim,还需要设置终端的字体。

Linux 或 macOS

curl -sLf https://spacevim.org/cn/install.sh | bash

安装结束后,初次打开 vim 或者 gvim 时, SpaceVim 会自动下载并安装插件。

如果需要获取安装脚本的帮助信息,可以执行如下命令,包括定制安装、更新和卸载等。

curl -sLf https://spacevim.org/cn/install.sh | bash -s -- -h

Windows

window 下最快捷的安装方法是下载安装脚本 install.cmd 并运行。

核心思想

四大核心思想: 记忆辅助, 可视化交互, 一致性,社区驱动.

如果违背了以上四大核心思想,我们将会尽力修复。

记忆辅助

所有快捷键,根据其功能的不同分为不同的组,以相应的按键作为前缀,例如 b 为 buffer 相关快捷键前缀,p 为 project 相关快捷键前缀, s 为 search 相关快捷键前缀,h 为 help 相关快捷键前缀。

可视化交互

创新的实时快捷键辅助系统,以及查询系统,方便快捷查询到可用的模块、插件以及其他更多信息。

一致性

相似的功能使用同样的快捷键,这在 SpaceVim 中随处可见。这得益于明确的约定。其他模块的文档都以此为基础。

社区驱动

社区驱动,保证了 bug 修复的速度,以及新特性更新的速度。

显著特性

  • 详细的文档: 在 SpaceVim 中通过:h SpaceVim来访问 SpaceVim 帮助文档。
  • 优雅简洁的界面: 你将会喜欢这样的优雅而实用的界面。
  • 确保手指不离开主键盘区域: 使用 Space 作为前缀键,合理组织快捷键,确保手指不离开主键盘区域。
  • 快捷键辅助系统: SpaceVim 所有快捷键无需记忆,当输入出现停顿,会实时提示可用按键及其功能。
  • 更快的启动时间: 得益于 dein.vim, SpaceVim 中90% 的插件都是按需载入的。
  • 更少的肌肉损伤: 频繁使用空格键,取代 ctrlshift 等按键,大大减少了手指的肌肉损伤。
  • 更易扩展: 依照一些约定,很容易将现有的插件集成到 SpaceVim 中来。
  • 完美支持Neovim: 依赖于 Neovim 的 romote 插件以及 异步 API,SpaceVim 运行在 Neovim 下将有更加完美的体验。

运行截图

欢迎页面

welcome-page

工作界面

work-flow

Neovim 运行在 iTerm2 上,采用 SpaceVim,配色为:base16-solarized-dark

展示了一个通用的前端开发界面,用于开发: JavaScript (jQuery), SASS, and PHP buffers.

图中包含了一个 Neovim 的终端, 一个语法树窗口,一个文件树窗口以及一个 TernJS 定义窗口

想要查阅更多截图,请阅读 issue #415

谁将从 SpaceVim 中获益?

  • 初级 Vim 用户.
  • 追求优雅界面的 Vim 用户
  • 追求更少肌肉损伤的 Vim 用户
  • 想要学习一种不一样的编辑文件方式的 Vim 用户
  • 追求简单但是可高度配置系统的 Vim 用户

更新和回滚

SpaceVim 自身更新

可通过很多种方式来更新 SpaceVim 的核心文件。建议在更新 SpaceVim 之前,更新一下所有的插件。具体内容如下:

自动更新

注意:默认,这一特性是禁用的,因为自动更新将会增加 SpaceVim 的启动时间,影响用户体验。如果你需要这一特性,可以将如下加入到用户配置文件中:let g:spacevim_automatic_update = 1

启用这一特性后,SpaceVim 将会在每次启动时候检测是否有新版本。更新后需重启 SpaceVim。

通过插件管理器更新

使用 :SPUpdate SpaceVim 这一命令,将会打开 SpaceVim 的插件管理器,更新 SpaceVim, 具体进度会在插件管理器 buffer 中展示。

通过 git 进行更新

可通过在 SpaceVim 目录中手动执行 git pull, SpaceVim 在 windows 下默认目录为 ~/vimfilers, 但在 Linux 下则可使用如下命令:
git -C ~/.SpaceVim pull.

更新插件

使用 :SPUpdate 这一命令将会更新所有插件,包括 SpaceVim 自身。当然这一命令也支持参数,参数为插件名称,可同时添加多个插件名称作为参数,同时可以使用 Tab 键来补全插件名称。

获取日志

使用 :SPDebugInfo! 这一命令可以获取 SpaceVim 运行时日志,同时,可以使用 SPC h I 使用打开问题模板。
可在这个模板中编辑问题,并提交。

用户配置

初次启动 SpaceVim 时,他将提供选择目录,用户需要选择合适自己的配置模板。此时,SpaceVim 将自动在 HOME 目录生成 ~/.SpaceVim.d/init.toml。所有用户脚本可以存储在~/.SpaceVim.d/,这一文件夹将被加入 Vim 的运行时路径 &runtimepath。详情清阅读 :h rtp

当然,你也可以通过 SPACEVIMDIR 这一环境变量,执定用户配置目录。当然也可以通过软连接连改变目录位置,以便配置备份。

SpaceVim 同时还支持项目本地配置,配置初始文件为,当前目录下的 .SpaceVim.d/init.toml 文件。同时当前目录下的 .SpaceVim.d/ 也将被加入到 Vim 运行时路径。

所有的 SpaceVim 选项可以使用 :h SpaceVim-config 来查看。选项名称未原先 Vim 脚本中使用的变量名称去处 g:spacevim_ 前缀。

如果你需要添加自定义以 SPC 为前缀的快捷键,你需要使用 bootstrap function,在其中加入:

call SpaceVim#custom#SPCGroupName(['G'], '+TestGroup')
call SpaceVim#custom#SPC('nore', ['G', 't'], 'echom 1', 'echomessage 1', 1)

Vim 兼容模式

以下为 SpaceVim 中与 Vim 默认情况下的一些差异,而在兼容模式下,
以下所有差异将不存在,可以通过设置 vimcompatible = true 来启用 Vim 兼容模式。

  • Noraml 模式下 s 按键不再删除光标下的字符,在 SpaceVim 中,
    它是 Windows 快捷键的前缀(可以在配置文件中设置成其他按键)。
    如果希望回复 s 按键原先的功能,可以通过 windows_leader = "" 使用一个空字符串来禁用这一功能。

  • Normal 模式下 , 按键在 Vim 默认情况下是重复上一次的 fFtT 按键,但在 SpaceVim 中默认被用作为语言专用的前缀键。如果需要禁用此选项,
    可设置 enable_language_specific_leader = false

  • Normal 模式下 q 按键在 SpaceVim 中被设置为了智能关闭窗口,
    即大多数情况下按下 q 键即可关闭当前窗口。可以通过 windows_smartclose = "" 使用一个空字符串来禁用这一功能,或修改为其他按键。

  • 命令行模式下 <C-a> 按键在 SpaceVim 中被修改为了移动光标至命令行行首。

私有模块

这一部分简单介绍了模块的组成,更多关于新建模块的内容可以阅读
SpaceVim 的模块首页

目的

使用模块的方式来组织和管理插件,将相关功能的插件组织成一个模块,启用/禁用效率更加高。同时也节省了很多寻找插件和配置插件的时间。

结构

在 SpaceVim 中,一个模块是一单个 Vim 文件,比如,autocomplete 模块存储在 autoload/SpaceVim/layers/autocomplete.vim,在这个文件内有以下几种公共函数:

  • SpaceVim#layers#autocomplete#plugins(): 返回该模块插件列表
  • SpaceVim#layers#autocomplete#config(): 模块相关设置
  • SpaceVim#layers#autocomplete#set_variable(): 模块选项设置函数

概念

临时快捷键菜单

SpaceVim 根据需要定义了很多临时快捷键,这将避免需要重复某些操作时,过多按下 SPC 前置键。当临时快捷键启用时,会在窗口下方打开一个快捷键介绍窗口,提示每一临时快捷键的功能。此外一些格外的辅助信息也将会体现出来。

文本移动临时快捷键:

Move Text Transient State

优雅的界面

SpaceVim 集成了多种使用 UI 插件,如常用的文件树、语法树等插件,配色主题默认采用的是 gruvbox。

颜色主题

默认的颜色主题采用的是 gruvbox。这一主题有深色和浅色两种。关于这一主题一些详细的配置可以阅读 :h gruvbox

如果需要修改 SpaceVim 的主题,可以在 ~/.SpaceVim.d/init.toml 中修改 colorscheme。例如,使用 Vim 自带的内置主题 desert:

[options]
    colorscheme = "desert"
    colorscheme_bg = "dark"
快捷键描述
SPC T n切换至下一个随机主题
SPC T s通过 Unite 选择主题

可以在主题模块中查看 SpaceVim 支持的所有主题。

注意:

SpaceVim 在终端下默认使用了真色,因此使用之前需要确认下你的终端是否支持真色。
可以阅读 Colours in terminal 了解根多关于真色的信息。

如果你的终端不支持真色,可以在 SpaceVim 用户配置 [options] 中禁用真色支持:

    enable_guicolors = false

字体

在 SpaceVim 中默认的字体是 DejaVu Sans Mono for Powerline.
如果你也喜欢这一字体,建议将这一字体安装到系统中。
如果需要修改 SpaceVim 的字体,可以在用户配置文件中修改 guifont,默认值为:

    guifont = "DejaVu\ Sans\ Mono\ for\ Powerline\ 11"

如果指定的字体不存在,将会使用系统默认的字体,此外,这一选项在终端下是无效的,终端下修改字体,需要修改终端自身配置。

界面元素切换

大多数界面元素可以通过快捷键来隐藏或者显示(这一组快捷键以 tT 开头):

快捷键描述
SPC t 8高亮所有超过80列的字符
SPC t f高亮临界列,默认 max_column 是第 120 列
SPC t h h高亮当前行
SPC t h i高亮代码对齐线
SPC t h c高亮光标所在列
SPC t h s启用/禁用语法高亮
SPC t i切换显示当前对齐(TODO)
SPC t n显示/隐藏行号
SPC t b切换背景色
SPC t t打开 Tab 管理器
SPC T ~显示/隐藏 buffer 结尾空行行首的 ~
SPC T F切换全屏(TODO)
SPC T f显示/隐藏 Vim 边框(GUI)
SPC T m显示/隐藏菜单栏
SPC T t显示/隐藏工具栏

状态栏

core#statusline 模块提供了一个高度定制的状态栏,提供如下特性,这一模块的灵感来自于 spacemacs 的状态栏。

  • 展示窗口序列号
  • 通过不同颜色展示当前模式
  • 展示搜索结果序列号
  • 显示/隐藏语法检查信息
  • 显示/隐藏电池信息
  • 显示/隐藏 SpaceVim 功能启用状态
  • 显示版本控制信息(需要 gitVersionControl 模块)
快捷键描述
SPC [1-9]跳至制定序号的窗口

默认主题 gruvbox 的状态栏颜色和模式对照表:

模式颜色
Normal灰色
Insert蓝色
Visual橙色
Replace浅绿色

以上的这几种模式所对应的颜色取决于不同的主题模式。

一些状态栏元素可以进行动态的切换:

快捷键描述
SPC t m b显示/隐藏电池状态 (需要安装 acpi)
SPC t m ctoggle the org task clock (available in org layer)(TODO)
SPC t m m显示/隐藏 SpaceVim 已启用功能
SPC t m M显示/隐藏文件类型
SPC t m ntoggle the cat! (if colors layer is declared in your dotfile)(TODO)
SPC t m p显示/隐藏鼠标位置信息
SPC t m t显示/隐藏时间
SPC t m d显示/隐藏日期
SPC t m T显示/隐藏状态栏
SPC t m v显示/隐藏版本控制信息

nerd 字体安装:

SpaceVim 默认使用 nerd fonts,可参阅其安装指南进行安装。

语法检查信息:

状态栏中语法检查信息元素如果被启用了,当语法检查结束后,会在状态栏中展示当前语法错误和警告的数量。

搜索结果信息:

当使用 /? 进行搜索时,或当按下 nN 后,搜索结果序号将被展示在状态栏中,类似于 20/22 显示搜索结果总数以及当前结果的序号。具体的效果图如下:

search status

电池状态信息:

acpi 可展示电池电量剩余百分比.

使用不同颜色展示不同的电池状态:

电池状态颜色
75% - 100%绿色
30% - 75%黄色
0 - 30%红色

所有的颜色都取决于不同的主题。

状态栏分割符:

可通过使用 statusline_separator 来定制状态栏分割符,例如使用非常常用的方向箭头作为状态栏分割符:

  statusline_separator = 'arrow'

SpaceVim 所支持的分割符以及截图如下:

分割符截图
arrowseparator-arrow
curveseparator-curve
slantseparator-slant
nilseparator-nil
fireseparator-fire

SpaceVim 功能模块:

功能模块可以通过 SPC t m m 快捷键显示或者隐藏。默认使用 Unicode 字符,可通过设置 statusline_unicode_symbols = false 来启用 ASCII 字符。(或许在终端中无法设置合适的字体时,可使用这一选项)。

状态栏中功能模块内的字符显示与否,同如下快捷键功能保持一致:

快捷键UnicodeASCII功能
SPC t 88高亮指定列后所有字符
SPC t ff高亮指定列字符
SPC t ss语法检查
SPC t SS拼写检查
SPC t ww行尾空格检查

状态栏的颜色

当前版本的状态栏支持 gruvbox/molokai/nord/one/onedark,如果你需要使用其他主题,
可以通过以下木板来设置:

" the theme colors should be
" [
"    \ [ a_guifg,  a_guibg,  a_ctermfg,  a_ctermbg],
"    \ [ b_guifg,  b_guibg,  b_ctermfg,  b_ctermbg],
"    \ [ c_guifg,  c_guibg,  c_ctermfg,  c_ctermbg],
"    \ [ z_guibg,  z_ctermbg],
"    \ [ i_guifg,  i_guibg,  i_ctermfg,  i_ctermbg],
"    \ [ v_guifg,  v_guibg,  v_ctermfg,  v_ctermbg],
"    \ [ r_guifg,  r_guibg,  r_ctermfg,  r_ctermbg],
"    \ [ ii_guifg, ii_guibg, ii_ctermfg, ii_ctermbg],
"    \ [ in_guifg, in_guibg, in_ctermfg, in_ctermbg],
" \ ]
" group_a: window id
" group_b/group_c: stausline sections
" group_z: empty area
" group_i: window id in insert mode
" group_v: window id in visual mode
" group_r: window id in select mode
" group_ii: window id in iedit-insert mode
" group_in: windows id in iedit-normal mode
function! SpaceVim#mapping#guide#theme#gruvbox#palette() abort
    return [
                \ ['#282828', '#a89984', 246, 235],
                \ ['#a89984', '#504945', 239, 246],
                \ ['#a89984', '#3c3836', 237, 246],
                \ ['#665c54', 241],
                \ ['#282828', '#83a598', 235, 109],
                \ ['#282828', '#fe8019', 235, 208],
                \ ['#282828', '#8ec07c', 235, 108],
                \ ['#282828', '#689d6a', 235, 72],
                \ ['#282828', '#8f3f71', 235, 132],
                \ ]
endfunction

这一模板是 gruvbox 主题的,如果你需要在切换主题是,状态栏都使用同一种颜色主题,
可以设置 custom_color_palette

custom_color_palette = [
    ["#282828", "#a89984", 246, 235],
    ["#a89984", "#504945", 239, 246],
    ["#a89984", "#3c3836", 237, 246],
    ["#665c54", 241],
    ["#282828", "#83a598", 235, 109],
    ["#282828", "#fe8019", 235, 208],
    ["#282828", "#8ec07c", 235, 108],
    ["#282828", "#689d6a", 235, 72],
    ["#282828", "#8f3f71", 235, 132],
    ]

标签栏

如果只有一个Tab, Buffers 将被罗列在标签栏上,每一个包含:序号、文件类型图标、文件名。如果有不止一个 Tab, 那么所有 Tab 将被罗列在标签栏上。标签栏上每一个 Tab 或者 Baffer 可通过快捷键 <Leader> number 进行快速访问,默认的 <Leader>\

快捷键描述
<Leader> 1跳至标签栏序号 1
<Leader> 2跳至标签栏序号 2
<Leader> 3跳至标签栏序号 3
<Leader> 4跳至标签栏序号 4
<Leader> 5跳至标签栏序号 5
<Leader> 6跳至标签栏序号 6
<Leader> 7跳至标签栏序号 7
<Leader> 8跳至标签栏序号 8
<Leader> 9跳至标签栏序号 9

标签栏上也支持鼠标操作,左键可以快速切换至该序号,中键删除该标签。该特性只支持 neovim,并且需要 has('tablineat') 特性。

按键描述
<Mouse-left>掉至标签该序号标签
<Mouse-middle>删除该序号标签

标签管理器

可使用 SPC t t 打开内置的标签管理器,标签管理器内的快捷键如下:

按键描述
o展开或关闭标签目录
<Enter>跳至光标所对应的标签窗口

常规快捷键

窗口管理器

窗口管理器快捷键只可以在 Normal 模式下使用,默认的前缀按键为 s,可以在配置文件中通过修改
SpaceVim 选项 window_leader 的值来设为其他按键:

按键描述
qSmart buffer close
s+pSplit nicely
s+v:split
s+g:vsplit
s+tOpen new tab (:tabnew)
s+oClose other windows (:only)
s+xRemove buffer, leave blank window
s+qRemove current buffer, left buffer in the tabline will be displayed. If there is no buffer on the left, the right buffer will be displayed; if this is the last buffer in the tabline, then an empty buffer will be displayed.
s+QClose current buffer (:close)
TabNext window or tab
Shift+TabPrevious window or tab
<leader>+svSplit with previous buffer
<leader>+sgVertically split with previous buffer

SpaceVim has mapped normal q as smart buffer close, the normal func of q
can be get by <leader> q r

KeyModeAction
<leader>+yvisualCopy selection to X11 clipboard ("+y)
Ctrl+cNormalCopy full path of current buffer to X11 clipboard
<leader>+Ctrl+cNormalCopy github.com url of current buffer to X11 clipboard(if it is a github repo)
<leader>+Ctrl+lNormal/visualCopy github.com url of current lines to X11 clipboard(if it is a github repo)
<leader>+pNormal/visualPaste selection from X11 clipboard ("+p)
Ctrl+fNormalSmart page forward (C-f/C-d)
Ctrl+bNormalSmart page backwards (C-b/C-u)
Ctrl+eNormalSmart scroll down (3C-e/j)
Ctrl+yNormalSmart scroll up (3C-y/k)
Ctrl+qNormalCtrl+w
Ctrl+xNormalSwitch buffer and placement
Up,DownNormalSmart up and down
}NormalAfter paragraph motion go to first non-blank char (}^)
<Visual/NormalIndent to left and re-select
>Visual/NormalIndent to right and re-select
TabVisualIndent to right and re-select
Shift+TabVisualIndent to left and re-select
gpNormalSelect last paste
Q/gQNormalDisable EX-mode ()
Ctrl+aCommandNavigation in command line
Ctrl+bCommandMove cursor backward in command line
Ctrl+fCommandMove cursor forward in command line

File Operations

KeyModeAction
<leader>+cdNormalSwitch to the directory of the open buffer
<leader>+wNormal/visualWrite (:w)
Ctrl+sNormal/visual/CommandWrite (:w)
:w!!CommandWrite as root (%!sudo tee > /dev/null %)

Editor UI

KeyModeAction
F2AllToggle tagbar
F3AllToggle Vimfiler
<leader> + numNormalJump to the buffer with the num index
<Alt> + numNormalJump to the buffer with the num index, this only works in neovim
<Alt> + h/<Left>NormalJump to left buffer in the tabline, this only works in neovim
<Alt> + l/<Right>NormalJump to Right buffer in the tabline, this only works in neovim
<leader>+tsNormalToggle spell-checker (:setlocal spell!)
<leader>+tnNormalToggle line numbers (:setlocal nonumber!)
<leader>+tlNormalToggle hidden characters (:setlocal nolist!)
<leader>+thNormalToggle highlighted search (:set hlsearch!)
<leader>+twNormalToggle wrap (:setlocal wrap! breakindent!)
g0NormalGo to first tab (:tabfirst)
g$NormalGo to last tab (:tablast)
grNormalGo to previous tab (:tabprevious)
Ctrl+<Dow>NormalMove to split below (j)
Ctrl+<Up>NormalMove to upper split (k)
Ctrl+<Left>NormalMove to left split (h)
Ctrl+<Right>NormalMove to right split (l)
*VisualSearch selection forwards
#VisualSearch selection backwards
,+SpaceNormalRemove all spaces at EOL
Ctrl+rVisualReplace selection
<leader>+ljNormalNext on location list
<leader>+lkNormalPrevious on location list
<leader>+SNormal/visualSource selection

Native functions

KeyModeAction
<leader> + qrNormalSame as native q
<leader> + qr/NormalSame as native q/, open cmdwin
<leader> + qr?NormalSame as native q?, open cmdwin
<leader> + qr:NormalSame as native q:, open cmdwin

Bookmarks management

KeyModeAction
m+aNormalShow list of all bookmarks
m+mNormalToggle bookmark in current line
m+nNormalJump to next bookmark
m+pNormalJump to previous bookmark
m+iNormalAnnotate bookmark

As SpaceVim use above bookmarks mappings, so you can not use a, m, n, p or i registers to mark current position, but other registers should works will. if you really need to use these registers, you can add nnoremap <leader>m m to your custom configuration, then you use use a registers via \ma

Fuzzy finder

SpaceVim provides five kinds of fuzzy finder, each of them is configured in a layer(unite, denite, leaderf, ctrlp and fzf layer).
These layers have the same key bindings and features. But they need different dependencies.

User only need to load one of these layers, then will be able to get these
features.

Key bindings

Key bindingsDiscription
<Leader> f <space>Fuzzy find menu:CustomKeyMaps
<Leader> f eFuzzy find register
<Leader> f fFuzzy find file
<Leader> f hFuzzy find history/yank
<Leader> f jFuzzy find jump, change
<Leader> f lFuzzy find location list
<Leader> f mFuzzy find output messages
<Leader> f oFuzzy find outline
<Leader> f qFuzzy find quick fix
<Leader> f rResumes Unite window

But in current version of SpaceVim, leaderf/ctrlp and fzf layer has not be finished.

Featureunitedeniteleaderfctrlpfzf
menu: CustomKeyMapsyesyesnonono
registeryesyesnoyesyes
fileyesyesyesyesyes
yank historyyesyesnonoyes
jumpyesyesnoyesyes
location listyesyesnonoyes
outlineyesyesyesyesyes
messageyesyesnonoyes
quickfix listyesyesnoyesyes
resume windowsyesyesnonono

Key bindings within fuzzy finder buffer

key bindingsModedescription
Tab/<C-j>-Select next line
Shift + Tab/<C-k>-Select previous line
jkInsertLeave Insert mode (Only for denite/unite)
Ctrl+wInsertDelete backward path
Enter-Run default action
Ctrl+s-Open in a split
Ctrl+v-Open in a vertical split
Ctrl+t-Open in a new tab
Ctrl+g-Exit unite

Denite/Unite normal mode key bindings

key bindingsModedescription
Ctrl+h/k/l/rNormalUn-map
Ctrl+lNormalRedraw
TabNormalSelect actions
SpaceNormalToggle mark current candidate, up
rNormalReplace ('search' profile) or rename
Ctrl+zNormal/insertToggle transpose window

The above key bindings only are part of fuzzy finder layers, please read the layer's documentation.

交互

快捷键

快捷键导航

当 Normal 模式下按下前缀键后出现输入延迟,则会在屏幕下方打开一个快捷键导航窗口,提示当前可用的快捷键及其功能描述,目前支持的前缀键有:[SPC][Window]<Leader>gz

这些前缀的按键为:

前缀名称用户选项以及默认值描述
[SPC]空格键SpaceVim 默认前缀键
[Window]windows_leader / sSpaceVim 默认窗口前缀键
<leader>默认的 Vim leader 键Vim/neovim 默认前缀键

默认情况下,快捷键导航将在输入延迟超过 1000ms 后打开,你可以通过修改 vim 的 'timeoutlen' 选项来修改成适合自己的延迟时间长度。

例如,Normal 模式下按下空格键,你将会看到:

mapping-guide

这一导航窗口将提示所有以空格键为前缀的快捷键,并且根据功能将这些快捷键进行了分组,例如 buffer 相关的快捷键都是 b,工程相关的快捷键都是 p。在代码导航窗口内,按下 <C-h> 键,可以获取一些帮助信息,这些信息将被显示在状态栏上,提示的是一些翻页和撤销按键的快捷键。

按键描述
u撤销按键
n向下翻页
p向上翻页

如果要自定义以 [SPC] 为前缀的快捷键,可以使用 SpaceVim#custom#SPC(),示例如下:

call SpaceVim#custom#SPC('nnoremap', ['f', 't'], 'echom "hello world"', 'test custom SPC', 1)

通过 Unite/Denite 浏览快捷键

可以通过 SPC ? 使用 Unite 将当前快捷键罗列出来。然后可以输入快捷键按键字母或者描述,Unite 可以通过模糊匹配,并展示结果。

unite-mapping

使用 <Tab> 键或者上下方向键选择你需要的快捷键,回车将执行这一快捷键。

获取帮助信息

Denite/Unite 是一个强大的信息筛选浏览器,这类似于 emacs 中的 Helm。以下这些快捷键将帮助你快速获取需要的帮助信息:

快捷键描述
SPC h SPC使用 Unite 展示 SpaceVim 帮助文档章节目录
SPC h i获取光标下单词的帮助信息
SPC h k使用快捷键导航,展示 SpaceVim 所支持的前缀键
SPC h m使用 Unite 浏览所有 man 文档

报告一个问题:

快捷键描述
SPC h I根据模板展示 Issue 所必须的信息
可用模块

所有可用模块可以通过命令 :SPLayer -l 或者快捷键 SPC h l 来展示。

可用的插件

可通过快捷键 <leader> l p 列出所有已安装的插件,支持模糊搜索,回车将使用浏览器打开该插件的官网。

添加用户自定义插件

如果添加来自于 github.com 的插件,可以 用户名/仓库名 这一格式,将该插件添加到 custom_plugins,示例如下:

[[custom_plugins]]
name = 'lilydjwg/colorizer'
merged = 0
界面元素显示切换

所有的界面元素切换快捷键都是已 [SPC] t 或者 [SPC] T 开头的,你可以在快捷键导航中查阅所有快捷键。

常规操作

光标移动

光标的移动默认采用 vi 的默认形式:hjkl

快捷键描述
h向左移动光标(Vim 原生功能,无映射)
j向下移动光标(Vim 原生功能,无映射)
k向上移动光标(Vim 原生功能,无映射)
l向右移动光标(Vim 原生功能,无映射)
H光标移至屏幕最上方(Vim 原生功能,无映射)
L光标移至屏幕最下方(Vim 原生功能,无映射)
SPC j 0跳至行首(并且标记原始位置)
SPC j $跳至行尾(并且标记原始位置)
SPC t -锁定光标在屏幕中间(TODO)
使用 vim-easymotion 快速跳转
快速跳到网址 (TODO)

类似于 Firefox 的 vimperator 的 f 键的功能。

快捷键描述
SPC j u/(o for help buffer)快速跳到/打开url
常用的成对快捷键
快捷键描述
[ SPC在当前行或已选区域上方添加空行
] SPC在当前行或已选区域下方添加空行
[ b跳至前一 buffer
] b跳至下一 buffer
[ f跳至文件夹中的前一个文件
] f跳至文件夹中的下一个文件
[ l跳至前一个错误处
] l跳至下一个错误处
[ c跳至前一个 vcs hunk (需要 VersionControl 模块)
] c跳至下一个 vcs hunk (需要 VersionControl 模块)
[ q跳至前一个错误
] q跳至下一个错误
[ t跳至前一个标签页
] t跳至下一个标签页
[ w跳至前一个窗口
] w跳至下一个窗口
[ e向上移动当前行或者已选择行
] e向下移动当前行或者已选择行
[ p粘贴至当前行上方
] p粘贴至当前行下方
g p选择粘贴的区域
跳转,合并,拆分

SPC j 为前缀的快捷键主要用作:跳转(jumping),合并(joining),拆分(splitting)。

跳转
快捷键描述
SPC j 0跳至行首,并且在原始位置留下标签,以便跳回
SPC j $跳至行尾,并且在原始位置留下标签,以便跳回
SPC j b向后回跳
SPC j f向前跳
SPC j d跳至当前目录某个文件夹
SPC j D跳至当前目录某个文件夹(在另外窗口展示文件列表)
SPC j i跳至当前文件的某个函数,使用 Denite 打开语法树
SPC j I跳至所有 Buffer 的语法树(TODO)
SPC j j跳至当前窗口的某个字符 (easymotion)
SPC j J跳至当前窗口的某两个字符的组合 (easymotion)
SPC j k跳至下一行,并且对齐下一行
SPC j l跳至某一行 (easymotion)
SPC j qshow the dumb-jump quick look tooltip (TODO)
SPC j u跳至窗口某个 url (TODO)
SPC j v跳至某个 vim 函数的定义处 (TODO)
SPC j w跳至 Buffer 中某个单词 (easymotion)
合并,拆分
快捷键描述
J合并当前行和下一行
SPC j k跳至下一行,并且对齐该行
SPC j n从光标处断开当前行,并且插入空行以及进行对齐
SPC j o从光标处拆分该行,光标留在当前行
SPC j s从光标处进行拆分 String
SPC j S从光标处进行拆分 String,并插入对齐的空行
窗口操作
窗口操作常用快捷键

每一个窗口,都有一个编号,该编号显示在状态栏的最前端,可通过 SPC 编号 进行快速窗口跳转。

快捷键描述
SPC 1跳至窗口 1
SPC 2跳至窗口 2
SPC 3跳至窗口 3
SPC 4跳至窗口 4
SPC 5跳至窗口 5
SPC 6跳至窗口 6
SPC 7跳至窗口 7
SPC 8跳至窗口 8
SPC 9跳至窗口 9

窗口操作相关快捷键(以 SPC w 为前缀):

快捷键描述
SPC w TAB/<Tab>在统一标签内进行窗口切换
SPC w =对齐分离的窗口
SPC w bforce the focus back to the minibuffer (TODO)
SPC w c进入阅读模式,浏览当前窗口
SPC w C选择某一个窗口,并且进入阅读模式
SPC w d删除一个窗口
SPC u SPC w ddelete a window and its current buffer (does not delete the file) (TODO)
SPC w D选择一个窗口,并且关闭
SPC u SPC w Ddelete another window and its current buffer using vim-choosewin (TODO)
SPC w ttoggle window dedication (dedicated window cannot be reused by a mode) (TODO)
SPC w ftoggle follow mode (TODO)
SPC w F新建一个新的标签页
SPC w h移至左边窗口
SPC w H将窗口向左移动
SPC w j移至下方窗口
SPC w J将窗口移至下方
SPC w k移至上方窗口
SPC w K将窗口移至上方
SPC w l移至右方窗口
SPC w L将窗口移至右方
SPC w m最大化/最小化窗口(最大化相当于关闭其他窗口)(TODO, now only support maximize)
SPC w M选择窗口进行替换
SPC w o按序切换标签页
SPC w p mopen messages buffer in a popup window (TODO)
SPC w p pclose the current sticky popup window (TODO)
SPC w r按序切换窗口
SPC w R逆序切换窗口
SPC w s or SPC w -水平分割窗口
SPC w S水平分割窗口,并切换至新窗口
SPC w uundo window layout (used to effectively undo a closed window) (TODO)
SPC w Uredo window layout (TODO)
SPC w v or SPC w /垂直分离窗口
SPC w V垂直分离窗口,并切换至新窗口
SPC w w切换至前一窗口
SPC w W选择一个窗口
文件和 Buffer 操作
Buffer 操作相关快捷键

Buffer 操作相关快捷键都是已 SPC b 为前缀的:

快捷键描述
SPC TAB切换至前一buffer,可用于两个 buffer 来回切换
SPC b .启用 buffer 临时快捷键
SPC b b切换至某一 buffer,通过 Unite/Denite 进行筛选
SPC b d删除当前 buffer,但保留 Vim 窗口
SPC u SPC b dkill the current buffer and window (does not delete the visited file) (TODO)
SPC b D选择一个窗口,并删除其 buffer
SPC u SPC b Dkill a visible buffer and its window using ace-window(TODO)
SPC b C-d删除其他 buffer
SPC b C-Dkill buffers using a regular expression(TODO)
SPC b e清除当前 buffer 内容,需要手动确认
SPC b h打开 SpaceVim 欢迎界面
SPC b n切换至下一个 buffer,排除特殊插件的 buffer
SPC b m打开 Messages buffer
SPC u SPC b mkill all buffers and windows except the current one(TODO)
SPC b p切换至前一个 buffer,排除特殊插件的 buffer
SPC b P使用剪切板内容替换当前 buffer
SPC b R从磁盘重新读取当前 buffer 所对应的文件
SPC b sswitch to the scratch buffer (create it if needed) (TODO)
SPC b w切换只读权限
SPC b Y将整个 buffer 复制到剪切板
z fMake current function or comments visible in buffer as much as possible (TODO)
新建空白 buffer
快捷键描述
SPC b N h在左侧新建一个窗口,并在其中新建空白 buffer
SPC b N j在下方新建一个窗口,并在其中新建空白 buffer
SPC b N k在上方新建一个窗口,并在其中新建空白 buffer
SPC b N l在右侧新建一个窗口,并在其中新建空白 buffer
SPC b N n在当前窗口新建一个空白 buffer
特殊 buffer

在 SpaceVim 中,有很多特殊的 buffer,这些 buffer 是由插件或者 SpaceVim 自身新建的,并不会被列出。

文件操作相关快捷键

文件操作相关的快捷键都是以 SPC f 为前缀的:

快捷键描述
SPC f b跳至文件书签
SPC f ccopy current file to a different location(TODO)
SPC f C d修改文件编码 unix -> dos
SPC f C u修改文件编码 dos -> unix
SPC f D删除文件以及 buffer,需要手动确认
SPC f Eopen a file with elevated privileges (sudo edit)(TODO)
SPC f f打开文件
SPC f F打开光标下的文件
SPC f oopen a file using the default external program(TODO)
SPC f Rrename the current file(TODO)
SPC f s保存文件
SPC f S保存所有文件
SPC f r打开文件历史
SPC f t切换侧栏文件树
SPC f T打开文件树侧栏
SPC f y复制当前文件,并且显示当前文件路径
Vim 和 SpaceVim 相关文件

SpaceVim 相关的快捷键均以 SPC f v 为前缀,这便于快速访问 SpaceVim 的配置文件:

快捷键描述
SPC f v v复制并显示当前 SpaceVim 的版本
SPC f v d打开 SpaceVim 的用户配置文件
文件树

SpaceVim 使用 vimfiler 作为默认的文件树插件,默认的快捷键是 F3, SpaceVim 也提供了另外一组快捷键 SPC f tSPC f T 来打开文件树,如果需要使用 nerdtree 作为默认文件树,需要设置:

# 默认值为 vimfiler
filemanager = "nerdtree"

SpaceVim 的文件树提供了版本控制信息的借口,但是这一特性需要分析文件夹内容,
会使得文件树插件比较慢,因此默认没有打开,如果需要使用这一特性,
可向配置文件中加入 enable_vimfiler_gitstatus = true,启用后的截图如下:

file-tree

文件树中的常用操作

文件树中主要以 hjkl 为核心,这类似于 vifm 中常用的快捷键:

快捷键描述
<F3> or SPC f t切换文件树
文件树内的快捷键
<Left> or h移至父目录,并关闭文件夹
<Down> or j向下移动光标
<Up> or k向上移动光标
<Right> or l展开目录,或打开文件
Ctrl+j未使用
Ctrl+l未使用
E未使用
.切换显示隐藏文件
sv分屏编辑该文件
sg垂直分屏编辑该文件
p预览文件
i切换至文件夹历史
v快速查看
gx使用相关程序执行该文件(TODO)
'切换标签
V标记该文件
Ctrl+r刷新页面
文件树中打开文件

如果只有一个可编辑窗口,则在该窗口中打开选择的文件,否则则需要制定窗口来打开文件:

快捷键描述
l or Enter打开文件
sg分屏打开文件
sv垂直分屏打开文件

g 为前缀的快捷键

在 Normal 模式下按下 g 之后,如果你不记得快捷键出现按键延迟,那么快捷键导航将会提示你所有以 g 为前缀的快捷键。

快捷键描述
g#反向搜索光标下的词
g$跳向本行最右侧字符
g&针对所有行重复执行上一次 ":s" 命令
g'跳至标签
g*正向搜索光标下的词
g+newer text state
g,newer position in change list
g-older text state
g/stay incsearch
g0go to leftmost character
g;older position in change list
g<last page of previous command output
g<Home>go to leftmost character
gEend of previous word
gFedit file under cursor(jump to line after name)
gHselect line mode
gIinsert text in column 1
gJjoin lines without space
gNvisually select previous match
gQswitch to Ex mode
gRenter VREPLACE mode
gTprevious tag page
gUmake motion text uppercase
g]tselect cursor tag
g^go to leftmost no-white character
g_go to last char
g`跳至标签,等同于 g'
ga打印光标字符的 ascii 值
gd跳至定义处
gego to end of previous word
gfedit file under cursor
gggo to line N
ghselect mode
giinsert text after '^ mark
gjmove cursor down screen line
gkmove cursor up screen line
gmgo to middle of screenline
gnvisually select next match
gogoto byte N in the buffer
gssleep N seconds
gtnext tag page
gumake motion text lowercase
g~swap case for Nmove text
g<End>跳至本行最右侧字符,等同于 g$
g<C-G>显示光标信息

z 开头的命令

当你不记得按键映射时, 你可以在普通模式下输入前缀 z , 然后你会看到所有以 z 为前缀的函数映射.

Key BindingDescription
z<Right>scroll screen N characters to left
z+cursor to screen top line N
z-cursor to screen bottom line N
z.cursor line to center
z<CR>cursor line to top
z=spelling suggestions
zAtoggle folds recursively
zCclose folds recursively
zDdelete folds recursively
zEeliminate all folds
zFcreate a fold for N lines
zGmark good spelled(update internal-wordlist)
zHscroll half a screenwidth to the right
zLscroll half a screenwidth to the left
zMset foldlevel to zero
zNset foldenable
zOopen folds recursively
zRset foldlevel to deepest fold
zWmark wrong spelled
zXre-apply foldlevel
z^cursor to screen bottom line N
zatoggle a fold
zbredraw, cursor line at bottom
zcclose a fold
zddelete a fold
zeright scroll horizontally to cursor position
zfcreate a fold for motion
zgmark good spelled
zhscroll screen N characters to right
zitoggle foldenable
zjmode to start of next fold
zkmode to end of previous fold
zlscroll screen N characters to left
zmsubtract one from foldlevel
znreset foldenable
zoopen fold
zradd one to foldlevel
zsleft scroll horizontally to cursor position
ztcursor line at top of window
zvopen enough folds to view cursor line
zxre-apply foldlevel and do "zV"
zzsmart scroll
z<Left>scroll screen N characters to right

搜索

使用额外工具

SpaceVim 像下面那样调用不同搜索工具的搜索接口:

SpaceVim 中的搜索命令是以 SPC s 为前缀的, 前一个键是使用的工具,后一个键是范围.
例如 SPC s a b将使用 ag在当前所有已经打开的缓冲区中进行搜索.

如果最后一个键(决定范围)是大写字母, 那么就会对当前光标下的单词进行搜索.
举个例子 SPC s a b 将会搜索当前光标下的单词.

如果工具键被省略了, 那么会用默认的搜索工具进行搜索. 默认的搜索工具对应在 g:spacevim_search_tools
列表中的第一个工具. 列表中的工具默认的顺序为: rg, ag, pt, ack then grep.
举个例子 如果 rgag 没有在系统中找到, 那么 SPC s b 会使用 pt 进行搜索.

下表是全部的工具键:

ToolKey
aga
grepg
ackk
rgr
ptt

应当避免的范围和对应按键为:

范围
opened buffersb
files in a given directoryf
current projectp

可以双击按键序列中的第二个键来在当前文件中进行搜索. 举个例子: SPC s a a 会使用 ag 在当前文件中进行搜索.

Notes:

  • 如果使用源代码管理的话 rg, agpt 都会被忽略掉, 但是他们可以在任意目录中正常运行.
  • 也可以通过将它们标记在联合缓冲区来一次搜索多个目录.
    注意 如果你使用 pt, TCL parser tools
    同时也需要安装一个名叫 pt 的命令行工具.
常用按键绑定
Key BindingDescription
SPC r lresume the last completion buffer
SPC s `go back to the previous place before jump
Prefix argumentwill ask for file extensions
在当前文件中进行搜索
Key BindingDescription
SPC s ssearch with the first found tool
SPC s Ssearch with the first found tool with default input
SPC s a aag
SPC s a Aag with default input
SPC s g ggrep
SPC s g Ggrep with default input
SPC s r rrg
SPC s r Rrg with default input
搜索当前文件所在的文件夹
Key BindingDescription
SPC s dsearching in buffer directory with default tool
SPC s Dsearching in buffer directory cursor word with default tool
SPC s a dsearching in buffer directory with ag
SPC s a Dsearching in buffer directory cursor word with ag
SPC s g dsearching in buffer directory with grep
SPC s g Dsearching in buffer directory cursor word with grep
SPC s k dsearching in buffer directory with ack
SPC s k Dsearching in buffer directory cursor word with ack
SPC s r dsearching in buffer directory with rg
SPC s r Dsearching in buffer directory cursor word with rg
SPC s t dsearching in buffer directory with pt
SPC s t Dsearching in buffer directory cursor word with pt
在所有打开的缓冲区中进行搜索
Key BindingDescription
SPC s bsearch with the first found tool
SPC s Bsearch with the first found tool with default input
SPC s a bag
SPC s a Bag with default input
SPC s g bgrep
SPC s g Bgrep with default input
SPC s k back
SPC s k Back with default input
SPC s r brg
SPC s r Brg with default input
SPC s t bpt
SPC s t Bpt with default input
在任意目录中进行搜索
Key BindingDescription
SPC s fsearch with the first found tool
SPC s Fsearch with the first found tool with default input
SPC s a fag
SPC s a Fag with default text
SPC s g fgrep
SPC s g Fgrep with default text
SPC s k fack
SPC s k Fack with default text
SPC s r frg
SPC s r Frg with default text
SPC s t fpt
SPC s t Fpt with default text
在工程中进行搜索
Key BindingDescription
SPC / or SPC s psearch with the first found tool
SPC * or SPC s Psearch with the first found tool with default input
SPC s a pag
SPC s a Pag with default text
SPC s g pgrep
SPC s g pgrep with default text
SPC s k pack
SPC s k Pack with default text
SPC s t ppt
SPC s t Ppt with default text
SPC s r prg
SPC s r Prg with default text

提示: 在工程中进行搜索的话, 无需提前打开文件. 在工程保存目录中使用 SPC p p 和 C-s , 就比如 SPC s p.(TODO) 

后台进行工程搜索

在工程中进行后台搜索时,当搜索完成时,会在状态栏上进行显示.

Key BindingDescription
SPC s jsearching input expr background with the first found tool
SPC s Jsearching cursor word background with the first found tool
SPC s lList all searching result in quickfix buffer
SPC s a jag
SPC s a Jag with default text
SPC s g jgrep
SPC s g Jgrep with default text
SPC s k jack
SPC s k Jack with default text
SPC s t jpt
SPC s t Jpt with default text
SPC s r jrg
SPC s r Jrg with default text
在网上进行搜索
Key BindingDescription
SPC s w gGet Google suggestions in vim. Opens Google results in Browser.
SPC s w wGet Wikipedia suggestions in vim. Opens Wikipedia page in Browser.(TODO)

注意: 为了在 vim 中使用谷歌 suggestions , 你需要在你的默认配置文件中加入 let g:spacevim_enable_googlesuggest = 1.

实时代码检索
Key BindingDescription
SPC s g GSearching in project on the fly with default tools

FlyGrep 缓冲区的按键绑定:

Key BindingDescription
<Esc>close FlyGrep buffer
<Enter>open file at the cursor line
<Tab>move cursor line down
<S-Tab>move cursor line up
<Bs>remove last character
<C-w>remove the Word before the cursor
<C-u>remove the Line before the cursor
<C-k>remove the Line after the cursor
<C-a>/<Home>Go to the beginning of the line
<C-e>/<End>Go to the end of the line
保持高亮

SPaceVim 使用 g:spacevim_search_highlight_persist 保持当前搜索结果的高亮状态到下一次搜索.
同样可以通过 SPC s c 或者 运行 ex 命令 :noh 来取消搜索结果的高亮表示.

Highlight current symbol

SpaceVim supports highlighting of the current symbol on demand and add a transient state to easily navigate and rename these symbol.

It is also possible to change the range of the navigation on the fly to:

  • buffer
  • function
  • visible area

To Highlight the current symbol under point press SPC s h.

Navigation between the highlighted symbols can be done with the commands:

Key BindingDescription
*initiate navigation transient state on current symbol and jump forwards
#initiate navigation transient state on current symbol and jump backwards
SPC s eedit all occurrences of the current symbol
SPC s hhighlight the current symbol and all its occurrence within the current range
SPC s Hgo to the last searched occurrence of the last highlighted symbol

In highlight symbol transient state:

Key BindingDescription
eedit occurrences (*)
ngo to next occurrence
N/pgo to previous occurrence
bsearch occurrence in all buffers
/search occurrence in whole project
Tabtoggle highlight current occurrence
rchange range (function, display area, whole buffer)
Rgo to home occurrence (reset position to starting occurrence)
Any other keyleave the navigation transient state

编辑

粘贴文本
粘贴文本自动缩进
文本操作命令

文本相关的命令 (以 x 开头):

Key BindingDescription
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 ]
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 ¦align region at ¦
SPC x a |align region at
SPC x a aalign region (or guessed section) using default rules (TODO)
SPC x a calign current indentation region using default rules (TODO)
SPC x a lleft-align with evil-lion (TODO)
SPC x a Lright-align with evil-lion (TODO)
SPC x a ralign region using user-specified regexp (TODO)
SPC x a malign region at arithmetic operators (+-*/) (TODO)
SPC x ccount the number of chars/words/lines in the selection region
SPC x d wdelete trailing whitespaces
SPC x d SPCDelete all spaces and tabs around point, leaving one space
SPC x g lset lanuages used by translate commands (TODO)
SPC x g ttranslate current word using Google Translate
SPC x g Treverse source and target languages (TODO)
SPC x i cchange symbol style to lowerCamelCase
SPC x i Cchange symbol style to UpperCamelCase
SPC x i icycle symbol naming styles (i to keep cycling)
SPC x i -change symbol style to kebab-case
SPC x i kchange symbol style to kebab-case
SPC x i _change symbol style to under_score
SPC x i uchange symbol style to under_score
SPC x i Uchange symbol style to UP_CASE
SPC x j cset the justification to center (TODO)
SPC x j fset the justification to full (TODO)
SPC x j lset the justification to left (TODO)
SPC x j nset the justification to none (TODO)
SPC x j rset the justification to right (TODO)
SPC x Jmove down a line of text (enter transient state)
SPC x Kmove up a line of text (enter transient state)
SPC x l dduplicate line or region (TODO)
SPC x l ssort lines (TODO)
SPC x l uuniquify lines (TODO)
SPC x ouse avy to select a link in the frame and open it (TODO)
SPC x Ouse avy to select multiple links in the frame and open them (TODO)
SPC x t cswap (transpose) the current character with the previous one
SPC x t wswap (transpose) the current word with the previous one
SPC x t lswap (transpose) the current line with the previous one
SPC x uset the selected text to lower case (TODO)
SPC x Uset the selected text to upper case (TODO)
SPC x w ccount the number of occurrences per word in the select region (TODO)
SPC x w dshow dictionary entry of word from wordnik.com (TODO)
SPC x TABindent or dedent a region rigidly (TODO)
文本插入命令

文本插入相关命令(以 i 开头):

Key bindingDescription
SPC i l linsert lorem-ipsum list
SPC i l pinsert lorem-ipsum paragraph
SPC i l sinsert lorem-ipsum sentence
SPC i p 1insert simple password
SPC i p 2insert stronger password
SPC i p 3insert password for paranoids
SPC i p pinsert a phonetically easy password
SPC i p ninsert a numerical password
SPC i uSearch for Unicode characters and insert them into the active buffer.
SPC i U 1insert UUIDv1 (use universal argument to insert with CID format)
SPC i U 4insert UUIDv4 (use universal argument to insert with CID format)
SPC i U Uinsert UUIDv4 (use universal argument to insert with CID format)
Increase/Decrease numbers
Key BindingDescription
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

In transient state:

Key BindingDescription
+increase the number under point by one
-decrease the number under point by one
Any other keyleave the transient state

Tips: you can increase or decrease a value by more that once by using a prefix argument (i.e. 10 SPC n + will add 10 to the number under point).

Replace text with iedit

SpaceVim uses powerful iedit mode to quick edit multiple occurrences of a symbol or selection.

Two new modes: iedit-Normal/iedit-Insert

The default color for iedit is red/green which is based on the current colorscheme.

iedit states key bindings

State transitions:

Key BindingFromto
SPC s enormal or visualiedit-Normal

In iedit-Normal mode:

iedit-Normal mode inherits from Normal mode, the following key bindings are specific to iedit-Normal mode.

Key BindingDescription
Escgo back to Normal mode
iswitch to iedit-Insert mode, same as i
aswitch to iedit-Insert mode, same as a
Igo to the beginning of the current occurrence and switch to iedit-Insert mode
Ago to the end of the current occurrence and switch to iedit-Insert mode
<Left>/hMove cursor to left
<Right>/lMove cursor to right
0/<Home>go to the beginning of the current occurrence
$/<End>go to the end of the current occurrence
Ddelete the occurrences
Sdelete the occurrences and switch to iedit-Insert mode
gggo to first occurrence
Ggo to last occurrence
ngo to next occurrence
Ngo to previous occurrence
preplace occurrences with last yanked (copied) text
<Tab>toggle current occurrence

In iedit-Insert mode:

Key BindingDescription
Escgo back to iedit-Normal mode
<Left>Move cursor to left
<Right>Move cursor to right
<C-w>delete words before cursor
<C-K>delete words after cursor
Examples
注释(Commentings)

注释(comment)通过下面的工具来处理 nerdcommenter, 它用下面的按键来界定范围.

Key BindingDescription
SPC ;comment operator
SPC c hhide/show comments
SPC c lcomment lines
SPC c Linvert comment lines
SPC c pcomment paragraphs
SPC c Pinvert comment paragraphs
SPC c tcomment to line
SPC c Tinvert comment to line
SPC c ycomment and yank
SPC c Yinvert comment and yank

小提示:SPC ; SPC j l 组合键高效的注释一个文本块的所有内容.

多方式编码

SpaceVim 默认使用 utf-8 码进行编码. 下面是 utf-8 编码的四个设置:

  • fileencodings (fencs): ucs-bom,utf-8,default,latin1
  • fileencoding (fenc): utf-8
  • encoding (enc): utf-8
  • termencoding (tenc): utf-8 (only supported in vim)

修复混乱的显示: SPC e a 是自动选择文件编码的按键映射. 在选择好文件编码方式后, 你可以运行下面的代码来修复编码:

set enc=utf-8
write

错误处理

SpaceVim 通过 neomake fly 工具来进行错误反馈. 默认在操作保存时进行错误检查.

错误管理导航键 (以 e 开头):

MappingsDescription
SPC t stoggle syntax checker
SPC e cclear all errors
SPC e hdescribe a syntax checker
SPC e ltoggle the display of the list of errors/warnings
SPC e ngo to the next error
SPC e pgo to the previous error
SPC e vverify syntax checker setup (useful to debug 3rd party tools configuration)
SPC e .error transient state

下一个/上一个 错误导航键 和 错误暂态(error transinet state) 可用于浏览语法检查器和位置列表缓冲区的错误,
甚至可检查vim位置列表的所有错误. 这包括下面的例子: 在已被保存的位置列表缓冲区进行搜索.
默认提示符:

SymbolDescriptionCustom option
Errorg:spacevim_error_symbol
warningg:spacevim_warning_symbol
?Infog:spacevim_info_symbol

工程管理

SpaceVim 中的工程通过 vim-projectionisst 和 vim-rooter 进行管理. 当发现一个 .git 目录 或
在文件树中发现 .projections.json 文件后 vim-rooter 会自动找到项目的根目录.

工程管理的命令以 p 开头:

Key BindingDescription
SPC p 'open a shell in project’s root (with the shell layer)
Searching files in project
Key BindingDescription
SPC p ffind files in current project
SPC p /fuzzy search for text in current project
SPC p kkill all buffers of current project
SPC p tfind project root
SPC p plist all projects

EditorConfig

SpaceVim has support for EditorConfig, a configuration file to “define and maintain consistent coding styles between different editors and IDEs.”

To customize your editorconfig experience, read the editorconfig-vim package’s documentation.

Vim Server

SpaceVim starts a server at launch. This server is killed whenever you close your Vim windows.

Connecting to the Vim server

If you are using neovim, you need to install neovim-remote, then add this to your bashrc.

export PATH=$PATH:$HOME/.SpaceVim/bin

Use svc to open a file in the existing Vim server, or using nsvc to open a file in the existing neovim server.

server-and-client

成就

错误

AchievementsAccount
100th issue(issue)BenBergman

Stars, forks and watchers

AchievementsAccount
First stargazersmonkeydterry
100th stargazersnaraj
1000th stargazersicecity96
2000th stargazersfrowhy
3000th stargazerspurkylin

转载于:https://www.cnblogs.com/wsdjeg/p/spacevim.html

SpaceVim 是一个社区驱动的模块化 Vim/Neovim 配置集合,以模块的方式组织管理插件以 及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全, 语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱 即用的 Vim-IDE。 特性: 1、多光标 Iedit 模式: SpaceVim 内置了一种特殊的模式,Iedit 模式,这种模式提供了多光标支持,不同于已有插件的实现, 该模式支持两种状态:iedit-Normal iedit-Insert。默认情况下,多光标输入时,iedit-normal 模式状态栏时是红色,而 iedit-insert 模式时是绿色,当然这由所选择的主题决定。 2、高亮光标下的函数: SpaceVim 支持高亮当前光标函数,并且启动一个特殊模式,在该模式下可以快捷地切换高亮区域 (方法内、屏幕内、整个文件内),并且可以快速在高亮函数间跳转、切换高亮状态(高亮、取消高亮), 并且可以根据已选择的位置进入 Iedit 模式。 3、实时代码检索: SpaceVim 自带的 FlyGrep 这个插件可以根据输入实时搜索项目代码,当然需要借助后台搜索工具, 目前支持的工具有:ag,rg,ack,pt grep,用户可任意选择一个喜欢的工具。 4、快捷键辅助导航: 在 SpaceVim 中,所有快捷键都有导航系统,你不需要记忆任何快捷键。初次使用时可根据快捷键提示进行操作。当按下空格键或者 g、z 以及 s 按键时,导航就会自动出现。当你记住了快捷键,输入比较快时,导航则不会出现。 5、快捷键描述系统 通过快捷键描述系统,你可以清楚的了解到一个快捷键的功能,并且可以快速跳转到快捷键定义的位置; 比如,通过 SPC h d k 启动快捷键描述系统,然后按下所需描述快捷键 SPC b n,就会弹出一个描述 窗口,在改窗口可以通过快捷键 gd 快速跳转到快捷键定义处。 6、异步插件管理器: SpaceVim 利用了 Vim 8 Neovim 最新的异步机制,实现了异步插件下载及更新,而插件运行管理采用的是 dein.vim
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值