SpaceVim-模块化的Vim-IDE
- 参考:
安装
在 Manjaro 上安装
1 2 3 4 | sudo pacman -S neovim curl -sLf https://spacevim.org/cn/install.sh | bash # 或 curl -sLf https://spacevim.org/install.sh | bash |
卸载
1 2 | curl -sLf https://spacevim.org/install.sh | bash -s -- --uninstall rm -fr ~/.SpaceVim |
配置
快捷键 SPC f v d
打开配置文件
初次启动时,SpaceVim 弹出一个选择目录(basic 模式、 dark_powerd 模式),用户需要选择合适自己的配置模板。 此时,SpaceVim 将自动在 $HOME
目录生成 ~/.SpaceVim.d/init.toml
。 所有用户配置文件都可以存储在 ~/.SpaceVim.d/
。
插件
如果你需要添加 github 上的插件,只需要在 SpaceVim 配置文件中添加 [[custom_plugins]] 片段:
1 2 3 4 | [[custom_plugins]] repo = "lilydjwg/colorizer" on_cmd = ["ColorHighlight", "ColorToggle"] merged = false |
one_cmd
选项使得这个插件延迟加载。 该插件会在第一次执行 ColorHighlight 或者 ColorToggle 命令时被加载。
merged
选项用于设定是否合并该插件的文件夹,如果 merged 是 true,那么,这一插件内的文件将被合并到: ~/.cache/vimfiles/.cache/init.vim/
或者 ~/.cache/vimfiles/.cache/vimrc/
, 这依据当前使用的是 Neovim 还是 Vim。
除了 on_cmd 以外,还有一些其它的选项,可以通过 :h dein-options
查阅。
禁用插件
SpaceVim 默认安装了一些插件,如果需要禁用某个插件,可以通过 ~/.SpaceVim.d/init.toml
的 [options]
片段中的 disabled_plugins
这一选项来操作:
1 2 3 | [options] # 请注意,该值为一个 List,每一个选项为插件的名称,而非 github 仓库地址。 disabled_plugins = ["clighter", "clighter8"] |
SpaceVim 的模块
使用模块的方式来组织和管理插件,将相关功能的插件组织成一个模块,启用/禁用效率更加高。同时也节省了很多寻找插件和配置插件的时间。
在 SpaceVim 中,一个模块是一个单个的 Vim 文件,例如,autocomplete 模块存储在 autoload/SpaceVim/layers/autocomplete.vim,在这个文件内有以下几个公共函数:
SpaceVim#layers#autocomplete#plugins()
: 返回该模块插件列表SpaceVim#layers#autocomplete#config()
: 模块相关设置SpaceVim#layers#autocomplete#set_variable()
: 模块选项设置函数
启动函数
由于 toml 配置的局限性,SpaceVim 提供了两种启动函数 bootstrap_before
和 bootstrap_after
,在该函数内可以使用 Vim script。 可通过 ~/.SpaceVim.d/init.toml
的 [options]
片段中的这两个选项 bootstrap_before
和 bootstrap_after
来指定函数名称,例如:
1 2 3 | [options] bootstrap_before = "myspacevim#before" bootstrap_after = "myspacevim#after" |
启动函数文件应放置在 Vim &runtimepath 的 autoload 文件夹内。例如:
文件名:~/.SpaceVim.d/autoload/myspacevim.vim
1 2 3 4 5 6 7 8 | function! myspacevim#before() abort let g:neomake_c_enabled_makers = ['clang'] nnoremap jk <esc> endfunction function! myspacevim#after() abort iunmap jk endfunction |
函数 bootstrap_before
将在读取用户配置后执行,而函数 bootstrap_after
将在 VimEnter autocmd 之后执行。
如果你需要添加自定义以 SPC
为前缀的快捷键,你需要使用 bootstrap function,在其中加入:
1 2 3 4 | function! myspacevim#before() abort call SpaceVim#custom#SPCGroupName(['G'], '+TestGroup') call SpaceVim#custom#SPC('nore', ['G', 't'], 'echom 1', 'echomessage 1', 1) endfunction |
Vim 兼容模式
以下为 SpaceVim 中与 Vim 默认情况下的一些差异。
按键 s
是删除光标下的字符,但是在 SpaceVim 中, 它是Normal模式窗口快捷键的前缀,这一功能可以使用选项 windows_leader 来修改,默认是 s。 如果需要使用按键 s
的原生功能,可以将该选项设置为空。
1 2 | [options] windows_leader = '' |
按键 ,
是重复上一次的搜索 f、F、t 和 T ,但在 SpaceVim 中默认被用作为语言专用的前缀键。如果需要禁用此选项, 可设置 enable_language_specific_leader = false。
1 2 | [options] enable_language_specific_leader = false |
按键 q
是录制宏,但是在 SpaceVim 中被设置为了智能关闭窗口,设置该功能的选项是 windows_smartclose,默认值是 q, 可以通过将该选项设置成空字符串来禁用该功能,同时也可以设置成其他按键。
1 2 | [options] windows_smartclose = '' |
命令行模式下 Ctrl-a
按键在 SpaceVim 中被修改为了移动光标至命令行行首。
命令行模式下 Ctrl-b
按键被映射为方向键 <Left>
, 用以向左移动光标。
命令行模式下 Ctrl-f
按键被映射为方向键 <Right>
, 用以向右移动光标。
可以通过设置 vimcompatible = true
来启用 Vim 兼容模式,而在兼容模式下,以上所有差异将不存在。 当然,也可通过对应的选项禁用某一个差异。例如,恢复逗号 , 的原始功能,可以通过禁用语言专用的前缀键:
1 2 | [options] enable_language_specific_leader = false |
UI 界面设置
颜色主题 colorscheme
默认的颜色主题采用的是 gruvbox
。
- 修改主题设置
~/.SpaceVim.d/init.toml
的 [options]
片段中修改 colorscheme
选项。例如,使用 Vim 自带的内置主题 desert:
1 2 3 | [options] colorscheme = "desert" colorscheme_bg = "dark" |
快捷键 | 功能描述 |
SPC T n |
切换至下一个随机主题 |
SPC T s |
通过 Unite 选择主题 |
字体设置
默认字体使用 SourceCodePro Nerd Font Mono
如果需要修改 SpaceVim 的字体,可以在 ~/.SpaceVim.d/init.toml
的 [options]
片段中修改选项 guifont
,默认值为:
1 2 | [options] guifont = "SourceCodePro Nerd Font Mono:h11" |
高亮
快捷键 功能描述
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 c 切换 conceal 模式
SPC t p 切换 paste 模式
SPC t t 打开 Tab 管理器
SPC T ~ 显示/隐藏 Buffer 结尾空行行首的 ~
SPC T F 切换全屏(TODO)
SPC T f 显示/隐藏 Vim 边框(GUI)
SPC T m 显示/隐藏菜单栏
SPC T t 显示/隐藏工具栏
使用
快捷键导航 <leader>
键
leader 键默认为: \
leader + 数字
: 切换文件tab
如果需要修改 <Leader>
键则需要使用启动函数修改 g:mapleader
的值, 比如使用逗号 , 作为 <Leader>
按键。
1 2 3 | function! myspacevim#before() abort let g:mapleader = ',' endfunction |
快捷导航键 延迟设置
默认情况下,快捷键导航将在输入延迟超过 1000ms 后打开,你可以通过修改 Vim 的 ‘timeoutlen’ 选项来修改成适合自己的延迟时间长度。
快捷导航键 呼出的菜单操作
按键 功能描述
u 撤销按键
n 向下翻页
p 向上翻页
文件树
SpaceVim 使用 vimfiler 作为默认的文件树插件,
1 2 3 4 5 6 | [options] # 文件树插件可选值包括: # - vimfiler (默认) # - nerdtree # - defx filemanager = "defx" |
打开 / 关闭 文件树 F3
或 SPC f t
或 SPC f T
- 文件树内的快捷键
<Left>
/ h
移至父目录,并关闭文件夹
<Down>
/ j
向下移动光标
<Up>
/ k
向上移动光标
<Right>
/ l
展开目录,或打开文件
N
在光标位置新建文件
y y
复制光标下文件路径至系统剪切板
y Y
复制光标下文件至系统剪切板
P
在光标位置黏贴文件
.
切换显示隐藏文件
s v
分屏编辑该文件
s g
垂直分屏编辑该文件
p
预览文件
i
切换至文件夹历史
v
快速查看
>
放大文件树窗口宽度
<
缩小文件树窗口宽度
g x
使用相关程序执行该文件
'
标记光标下的文件(夹)
V
清除所有标记
Ctrl+r
刷新页面
- 文件树中打开文件
l
/ <Enter>
打开文件
sg
分屏打开文件
sv
垂直分屏打开文件
移动光标以及滚屏的快捷键
快捷键 功能描述
H
移动光标至屏幕顶部
L
移动光标至屏幕底部
<
向左移动文本
>
向右移动文本
}
向前移动一个段落
{
向后移动一个段落
Ctrl-f
向下翻页 (Ctrl-f
/ Ctrl-d
)
Ctrl-b
向上翻页 (C-b
/ C-u
)
Ctrl-e
向下滚屏 (3 Ctrl-e/j
)
Ctrl-y
向上滚屏 (3Ctrl-y/k
)
Ctrl-Shift-Up
向上移动当前行
Ctrl-Shift-Down
向下移动当前行
按键 功能描述
<F2>
打开、关闭语法树
<F3>
打开、关闭文件树
Ctrl-<Down>
切换至下方窗口
Ctrl-<Up>
切换至上方窗口
Ctrl-<Left>
切换至左边窗口
Ctrl-<Right>
切换至右边窗口
编辑
移动文本块
快捷键 功能描述
<
/ Shift-Tab
向左移动文本
>
/ Tab
向右移动文本
Ctrl-Shift-Up
向上移动选中行
Ctrl-Shift-Down
向下移动选中行
代码缩进
默认的代码缩进值是 2,缩进的大小由选项 default_indent 设置, 如果希望使用 4 个空格作为缩进,只需要在 SpaceVim 配置文件中加入如下内容:
1 2 | [options] default_indent = 4 |
default_indent
这一选项的值,将被赋值到 Vim 的选项:&tabstop
、&softtabstop
和 &shiftwidth
。默认情况下,输入的 <Tab>
会被自动展开成对应缩进数量的空格, 可通过设置选项 expand_tab 的值为 false 来禁用这一特性:
1 2 3 | [options] default_indent = 4 expand_tab = true |
复制粘贴
如果 has('unnamedplus')
返回 1,那么快捷键 <Leader> y
使用的寄存器是 +
, 否则,这个快捷键使用的寄存器是 *
, 可以阅读 :h registers
获取更多关于寄存器相关的内容。
快捷键 功能描述
<Leader> y
复制文本至系统剪切板
<Leader> p
粘贴系统剪切板文字至当前位置之后
<Leader> P
粘贴系统剪切板文字至当前位置之前
文本编码格式
SpaceVim 默认使用 utf-8 码进行编码。下面是 utf-8 编码的四个设置:
1 2 3 4 | 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
是自动选择文件编码的按键映射。在选择好文件编码方式后,你可以运行下面的代码来修复编码:
1 2 | set enc=utf-8 write |