终极 Vim 配置:SpaceVim

SpaceVim 中文手册

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

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

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

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

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

推荐阅读:

  • SpaceVim 入门教程
  • Hack SpaceVim 中文版

安装

Linux/Mac:

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

想要获取更多的信息,请参考:

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

SpaceVim是一种模块化配置,可以运行在vim或者neovim上,关于vim以及neovim的安装,请参考以下链接:

安装neovim

从源码编译vim

windows:

Window 下最方便的是下载安装脚本(install.cmd)至本地,直接运行,安装完毕后,打开 Gvim 他将自动下载插件,在 Windows 下需要手动安装 Nerd-fonts 字体。

更新

可以通过 :SPUpdate 命令来更新spacevim 以及包含的插件,如果需要更新指定的插件,如:startuptime.vim,只需要执行 :SPUpdate startuptime.vim,也可以通过 :SPUpdate SpaceVim 来更新 SpaceVim.

文档

核心思想

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

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

记忆辅助

所有快捷键,根据其功能的不同分为不同的组,以相应的按键作为前缀,例如 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 下将有更加完美的体验。

快捷键导航

SpaceVim 所有的快捷键都不需要去记忆,有强大的快捷键导航系统来提示每一个按键的具体功能,比如 Normal 模式下按下空格键,将出现如下提示:

mapping-guide

这一导航提示将所有以空格为前缀的快捷键分组展示,比如 b 是所以 buffer 相关的快捷键, p 是所有工程管理相关的快捷键。在导航模式下按下 你将在状态栏上看见相应的帮助信息,按键介绍如下:

按键 描述
u 撤销前一按键
n 导航系统下一页
p 导航系统前一页

运行截图

欢迎页面

终极 Vim 配置:SpaceVim_第1张图片

工作界面

终极 Vim 配置:SpaceVim_第2张图片

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 键来补全插件名称。

配置模块

这里仅仅是大致罗列了下常用的模块,若要了解关于配置模块更加详细的信息,可阅读 SpaceVim’s layers page,(强烈建议阅读!)

用户配置

用户配置保存在 ~/.SpaceVim.d/ 文件夹。

自动生成用户配置

初次启动 SpaceVim 时,他将提供选择目录,用户需要选择合适自己的配置模板。此时,SpaceVim 将自动在 HOME 目录生成 ~/.SpaceVim.d/init.vim

用户配置目录

~/.SpaceVim.d/ 将被加入 Vim 的运行时路径 &runtimepath。详情清阅读 :h rtp.

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

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

这是一个用户配置文件示例:

" Here are some basic customizations, please refer to the ~/.SpaceVim.d/init.vim
" file for all possible options:
let g:spacevim_default_indent = 3
let g:spacevim_max_column     = 80

" Change the default directory where all miscellaneous persistent files go.
" By default it is ~/.cache/vimfiles.
let g:spacevim_plugin_bundle_dir = '~/.cache/vimfiles'

" set SpaceVim colorscheme
let g:spacevim_colorscheme = 'jellybeans'

" Set plugin manager, you want to use, default is dein.vim
let g:spacevim_plugin_manager = 'dein'  " neobundle or dein or vim-plug

" use space as ``
let mapleader = "\"

" Set windows shortcut leader [Window], default is `s`
let g:spacevim_windows_leader = 's'

" Set unite work flow shortcut leader [Unite], default is `f`
let g:spacevim_unite_leader = 'f'

" By default, language specific plugins are not loaded. This can be changed
" with the following, then the plugins for go development will be loaded.
call SpaceVim#layers#load('lang#go')

" loaded ui layer
call SpaceVim#layers#load('ui')

" If there is a particular plugin you don't like, you can define this
" variable to disable them entirely:
let g:spacevim_disabled_plugins=[
\ ['junegunn/fzf.vim'],
\ ]

" If you want to add some custom plugins, use these options:
let g:spacevim_custom_plugins = [
\ ['plasticboy/vim-markdown', {'on_ft' : 'markdown'}],
\ ['wsdjeg/GitHub.vim'],
\ ]

" set the guifont
let g:spacevim_guifont = 'DejaVu\ Sans\ Mono\ for\ Powerline\ 11'

更加详细的 SpaceVim 选项可以查阅 :h SpaceVim.

概念

临时快捷键

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

文本移动临时快捷键:

优雅的界面

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

终极 Vim 配置:SpaceVim_第3张图片

主题

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

如果需要修改 SpaceVim 的主题,可以在 ~/.SpaceVim.d/init.vim 中修改 g:g:spacevim_colorscheme。例如,使用 vim-one with dark colorscheme

let g:spacevim_colorscheme = 'one'
let g:spacevim_colorscheme_bg = 'dark'
快捷键 描述
SPC T n 切换至下一个随机主题
SPC T s 通过 Unite 选择主题

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

注意:

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

字体

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

let g:spacevim_guifont = 'DejaVu\ Sans\ Mono\ for\ Powerline\ 11'

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

界面元素切换

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

快捷键 描述
SPC t 8 高亮所有超过80列的字符
SPC t f 高亮临界列,默认是第80列
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 显示/隐藏工具栏

状态栏 & 标签栏

状态栏和工具栏是高度定制的模块,提供了如下特性:

  • 展示 buffer 或者 Tab 的序列号
  • 展示当前模式
  • 展示 git 相关信息
  • 展示语法检查信息
  • 展示 trailing line 的行号
  • 展示当前 SpaceVim 已启用的功能
  • 展示文件信息
  • 展示搜索结果序号
快捷键 描述
SPC [1-9] 跳至制定序号的窗口
状态栏

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

  • 展示窗口序列号
  • 通过不同颜色展示当前模式
  • 展示搜索结果序列号
  • 显示/隐藏语法检查信息
  • 显示/隐藏电池信息
  • 显示/隐藏 SpaceVim 功能启用状态

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

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

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

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

快捷键 描述
SPC t m b 显示/隐藏电池状态 (需要安装 acpi)
SPC t m c toggle the org task clock (available in org layer)(TODO)
SPC t m m 显示/隐藏 SpaceVim 已启用功能
SPC t m M 显示/隐藏文件类型
SPC t m n toggle 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 显示/隐藏版本控制信息

Powerline 字体安装:

SpaceVim 默认使用 DejaVu Sans Mono for Powerline, 为了使状态栏得以正常显示,你需要安装这一字体。如果需要在状态栏中展示其他类型的分割符,则需要安装 powerline extra symbols.

语法检查信息:

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

TODO: add a picture

语法检查信息

搜索结果信息:

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

search status

search index in statusline

电池状态信息:

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

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

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

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

状态栏分割符:

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

let g:spacevim_statusline_separator = 'arrow'

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

分割符 截图
arrow separator-arrow
curve separator-curve
slant
nil
fire separator-fire

SpaceVim 功能模块:

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

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

快捷键 Unicode ASCII 功能
SPC t 8 8 高亮80列之后信息
SPC t f f 高亮第80列
SPC t s s 语法检查
SPC t S S 拼写检查
SPC t w w 行尾空格检查
标签栏

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

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

手册

自动补全

Unite/Denite

请阅读 unite 和 denite 文档: :h unite:h denite

Unite/Denite buffer 中的快捷键
快捷键 模式 功能描述
Ctrl+h/k/l/r Normal 无效
Ctrl+l Normal 刷新界面
Tab Insert 下一结果
Tab Normal 选择操作
Shift + Tab Insert 上一结果
Space Normal 标记当前结果
Enter Normal 执行默认操作
Ctrl+v Normal 在分割窗口中打开
Ctrl+s Normal 在垂直分割窗口打开
Ctrl+t Normal 在新 Tab 中打开
Ctrl + g Normal 推出 Unite/Denite
jk Insert 离开 Insert 模式
r Normal 重命名或者替换搜索内容
Ctrl+z Normal/insert 切换窗口布局
Ctrl+w Insert 删除前一单词

交互

快捷键
快捷键导航

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

这些前缀的按键为:

前缀名称 用户选项以及默认值 描述
[SPC] 空格键 SpaceVim 默认前缀键
[Window] g:spacevim_windows_leader / s SpaceVim 默认窗口前缀键
[denite] g:spacevim_denite_leader / F SpaceVim 默认 Denite 前缀键
[unite] g:spacevim_unite_leader / f SpaceVim 默认 Unite 前缀键
mapleader / \\ Vim/neovim 默认前缀键

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

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

mapping-guide

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

按键 描述
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 可以通过模糊匹配,并展示结果。

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

获取帮助信息

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 来展示。

可用的插件

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

添加用户自定义插件

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

let g:spacevim_custom_plugins = [
    \ ['plasticboy/vim-markdown', {'on_ft' : 'markdown'}],
    \ ['wsdjeg/GitHub.vim'],
    \ ]
界面元素显示切换

所有的界面元素切换快捷键都是已 [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)
快速跳转
快速跳到网址 (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
] c 跳至下一个 vcs hunk
[ 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 q show 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/ 在统一标签内进行窗口切换
SPC w = 对齐分离的窗口
SPC w b force the focus back to the minibuffer (TODO)
SPC w c 进入阅读模式,浏览当前窗口
SPC w C 选择某一个窗口,并且进入阅读模式
SPC w d 删除一个窗口
SPC u SPC w d delete a window and its current buffer (does not delete the file) (TODO)
SPC w D 选择一个窗口,并且关闭
SPC u SPC w D delete another window and its current buffer using vim-choosewin (TODO)
SPC w t toggle window dedication (dedicated window cannot be reused by a mode) (TODO)
SPC w f toggle 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 m open messages buffer in a popup window (TODO)
SPC w p p close the current sticky popup window (TODO)
SPC w r 按序切换窗口
SPC w R 逆序切换窗口
SPC w s or SPC w - 水平分割窗口
SPC w S 水平分割窗口,并切换至新窗口
SPC w u undo window layout (used to effectively undo a closed window) (TODO)
SPC w U redo 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 d kill the current buffer and window (does not delete the visited file) (TODO)
SPC b D 选择一个窗口,并删除其 buffer
SPC u SPC b D kill a visible buffer and its window using ace-window(TODO)
SPC b C-d 删除其他 buffer
SPC b C-D kill 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 m kill all buffers and windows except the current one(TODO)
SPC b p 切换至前一个 buffer,排除特殊插件的 buffer
SPC b P 使用剪切板内容替换当前 buffer
SPC b R 从磁盘重新读取当前 buffer 所对应的文件
SPC b s switch to the scratch buffer (create it if needed) (TODO)
SPC b w 切换只读权限
SPC b Y 将整个 buffer 复制到剪切板
z f Make 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 c copy 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 E open a file with elevated privileges (sudo edit)(TODO)
SPC f f 打开文件
SPC f F 打开光标下的文件
SPC f o open a file using the default external program(TODO)
SPC f R rename 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 作为默认文件树,需要设置:

" the default value is vimfiler
let g:spacevim_filemanager = 'nerdtree'

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

文件树中的常用操作

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

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

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

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

你可能感兴趣的:(spacevim,vim,github,Java,python)