SkillAgentSearch skills...

SpaceVim

基于SpaceVim的真正开箱即用、无需配置的IDE,你只需要记住快捷键即可。(目前默认支持C/C++、Go、Python、Shell、Markdown、VimL)

Install / Use

/learn @mrbeardad/SpaceVim
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center">

最新 Neovim 支持见 MyIDE

</div>

For Neovim 7.0+

如果你的环境支持neovim7.0+,不妨试试现代neovim全新的LSP+Lua生态,见MyLunarVim

For VSCode User

见vscode分支

写在前面

SpaceVim 是一个非常棒的配置集合。 相比于其他热门vim配置,SpaceVim开发最活跃,功能最完善,文档最齐全。 模块化的设计使得用户可以更方便、更精准地进行自定义,魔改原配置。 哪里不顺改那里,精准打击✺◟(∗❛ัᴗ❛ั∗)◞✺


注意注意!敲黑板!使用手册在此!

先look~look我改了哪些地方,然后再按一个个模块来讲解各种特性吧

gdi

目录

<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc -->

颜色主题

 SpaceVim的 colorscheme模块 提供了不少颜色主题。 我将语法高亮与颜色主题都针对C++源码进行了微调。

 只需要在启动nvim时设置环境变量DARKBG=1即可随机启用那些花里胡哨的主题中的一个, 或者类似设置DARKBG=gruvbox可指定使用gruvbox主题。 我一般设置命令别名alias vi='DARKBG=1 nvim'

 演示使用NerdCodePro字体, 该字体集成了3种字体于一身,使得regular、bold、italic三种style使用三种不同的字体, 看起来赏心悦目超nice。

PS:要是所有终端都像alacritty一样支持不同style不同字体,我至于这么折腾自己吗(* ̄︿ ̄)

SpaceVim SpaceVim

gruvbox gruvbox

NeoSolarized NeoSolarised

palenight palenight

material material

启动界面字符画

这个模块提供了许多SpaceVim启动界面的字符画,拉风的很。而且有惊喜哦>_<

banner

状态栏与标签栏

这两个模块提供了状态栏与标签栏的配置,若禁用该模块则会启用备胎vim-airline

标签栏

tabline

左边的每块标签包括:

  • 标签号
  • 文件名

最右边的表示:

  • Buffers:指明左边的标签为buffer
  • Tabs:指明左边的标签为tab

状态栏

new statusline

从左至右依次是:

  1. 当前vim模式以及窗口号
  2. 当前git分支
  3. 当前文件相对项目目录的路径(若文件只读还会显示特殊符号锁)
  4. 源码语法检错报错
  5. 文件类型
  6. 文件格式|编码格式
  7. 当前行号/总行数 :当前列号
  8. 屏幕显示的文本占比(接近文件内容边缘时会显示Bot或Top)

符号表、文件树、撤销树

 符号表插件使用的是tagbar,按<F1>开启  文件树插件使用的是defx,按<F2>开启  撤销树插件使用的是undotree,按<F4>开启

<!-- <img align="left" height=700 src="custom/tagbar.png"></img> --> <!-- <img align="left" height=700 src="custom/defx.png"></img> --> <!-- <img align="center" height=700 src="custom/undo.png"></img> -->

tagbar tagbar tagbar

高效编辑

提供了许多插件用于快速、舒服地写代码:

  • 提供许多额外的文本对象:如e(entire)、i(indent)、l(line)、f(function)以及最好用的,(表示一个逗号分割的函数参数)

  • 提供了快速编辑结对符的插件vim-surround,看官方的演示更好理解用法,该插件可以与文本对象一同作用

  • 还提供了一个快速跳转光标的插件(以下只是其功能之一): easymotion

  • 虽然这个插件不属于edit模块,但还是放这儿一起show一波吧。多光标编辑,大杀器! VM

模糊搜索

这个模块即是围绕LeaderF搜索插件打造的 leaderf SpaceVim集成该插件时做了一些定制,会与上述官方演示有些不一样,不过都是配置好了的,用就完事儿! | 按键 | 作用 | | ------------------ | ----------------------- | | <leader>fr | 重置上次搜索 | | <leader>f<space> | 搜索快捷键并执行 | | <leader>fp | 搜索插件信息 | | <leader>fh | 搜索vim帮助文档 | | <leader>fq | 搜索quickfix | | <leader>fl | 搜索locationlist | | <leader>fm | 搜索vim的输出信息并复制 | | <leader>fu | 搜索unicode并插入 | | <leader>fj | 搜索跳转表并跳转 | | <leader>fy | 搜索"寄存器历史并复制 | | <leader>fe | 搜索所有寄存器并复制 | | <leader>ff | 搜索当前buffer函数 | | <leader>fF | 搜索所有buffer函数 | | <leader>ft | 搜寻当前buffer符号 | | <leader>fT | 搜寻所有buffer符号 | | <leader>fg | 利用gtags搜寻标识符 | | <leader>sr | 搜索最近打开文件 | | <leader>sb | 搜索打开的缓冲区 | | <leader>sd | 搜索当前目录文件 | | <leader>sf | 搜索指定目录 |

| Leaderf界面快捷键 | 功能 | | ----------------- | -------------------------------- | | <c-e> | 切换模糊搜索模式或正则表达式模式 | | <c-c> | 关闭leaderf |

文本搜索

flygrep是个集成在SpaceVim里的默认插件,但其功能也不亚于LeaderF, 后者用来搜索文件名、代码符号,flygrep用来搜索文件内容 | 按键 | 作用 | | ----------- | -------------- | | <space>ss | 搜索当前缓冲区 | | <space>sb | 搜索所有缓冲区 | | <space>sd | 搜索当前目录 | | <space>sf | 搜索指定目录 | | <space>sp | 搜索工程目录 | | <space>sd | 搜索当前目录 | | <space>sf | 搜索指定目录 | | <space>sp | 搜索工程目录 |

| flygrep界面快捷键 | 作用 | | ----------------- | -------------------------------- | | <c-e> | 切换正则搜索模式或字符串锁搜模式 | | <m-r> | 进入替换模式 | | <c-p> | 浮窗预览 | | <c-d> | 向下翻页 | | <c-b> | 向上翻页 | | <c-c>或<esc> | 关闭flygrep |

版本管理

这俩模块我一半就只用来给statusline加个分支提示,我tmux开个zsh来管理项目不香吗( ◔ ڼ ◔ )

| 快捷键 | 功能 | | ------------ | -------------------------------------- | | <space>gg | 侧栏显示diff(开启gitgutter) | | <space>ghv | 浮窗显示diff(需要开启上述gitgutter) | | <space>ghr | 撤销diff修改 (需要开启上述gitgutter) |

在线翻译

提供了vim的中文文档,以及联网翻译器: trans

代码补全

 语义补全引擎默认使用YouCompleteMe。 可以帮你补全命名变量、函数、类、方法等等,任意输入两个字母就自动打开补全列表, <tab><s-tab>上下选择,<cr>完成选择。

 目前以集成:

  • C/C++
  • Go
  • Python
  • Vim
  • Bash
  • CMake

 刚引入的头文件还需待后台服务进行解析, 故其中的符号可能不会立刻出现在补全列表中,稍等即可。

autocomplete

 除了语义补全,还有代码片段补全,插件为UltiSnips。 即按一定的语法编辑snippet配置文件后,再在代码中输入关键字, 然后按<M-/><kbd>Alt</kbd>+<kbd>/</kbd>)触发,就会将关键字替换为配置文件中的完整片段。 然后一路<M-/>修改锚点  提供的默认片段位于UltiSnips文件夹下

语法检测

 语法检测主要是利用YCM搭配ALE, 后者通过shell来调用使用静态分析器来进行语法检测。 在底部命令行的位置显示报错与警告,并在边栏显示错误或警告图标, 在错误代码的位置下显示波浪线(若终端不支持undercurl则回滚为underline下划线) checker

  • g:ale_lint_on_* :这几个变量设置何时触发语法检测,用:h查看详细信息, 默认只有文件有改动就会触发

代码运行

~/.SpaceVim.d/init.toml中的[option]下设置enable_terminal_runner = true 即可启用QuickRun替代原版中的Runner来运行程序,QuickRun与后者区别在于:

  • 使用内建终端
  • 程序运行计时器更加准确
  • 设置参数比较方便

runner

命令:

  • 命令以Quickrun开头,如QuickrunCompileCmd gcc ${file}表示修改编译命令为gcc ${file}${file}会被替换为当前文件,其他替换见下
  • 命令带!后缀表示修改参数
" 例:
:QuickrunCompileCmd         " 查看当前编译命令
:QuickrunRunCmd!            " 修改运行命令(交互)
:QuickrunRedir < file       " 重定向stdin到file

选项:

let g:quickrun_default_flags = {
    \ 'cpp': {
        \ 'compileCmd': "g++ -g3 -ggdb3 -D_GLIBCXX_DEBUG -I${fileDirname} -I${workspaceFolder}include -o ${execPath} ${file}",
        \ 'extRegex': [
            \ '\v^#\s*include\s*[<"](pthread\.h|future|thread|.*asio\.hpp|.*gtest\.h)[>"]',
            \ '^#\s*include\s*[<"]dlfcn.h[>"]',
            \ '^#\s*include\s*[<"]pty.h[>"]',
            \ '^#\s*include\s*[<"]boost/locale\.hpp[>"]',
            \ '^#\s*include\s*[<"]*asio/ssl\.hpp[>"]',
            \ '^#\s*include\s*[<"](*asio/co_spawn\.hpp\|coroutine)[>"]',
            \ '^#\s*include\s*[<"]glog/.*[>"]',
            \ '^#\s*include\s*[<"]gtest/.*[>"]',
            \ '^#\s*include\s*[<"]gmock/.*[>"]',
            \ '^#\s*include\s*[<"]mysql++/.*[>"]',
            \ '^#\s*include\s*[<"]srchilite/.*[>"]',
            \ '^#\s*include\s*[<"]fmt/.*[>"]',
        \ ],
        \ 'extFlags': [
            \ '-lpthread',
            \ '-ldl',
            \ '-lutil',
            \ '-lboost_locale',
            \ '-lssl -lcrypto',
            \ '-fcoroutines',
            \ '-lglog',
            \ '-lgtest -lgtest_main',
            \ '-lgmock',
            \ '-I/usr/include/mysql -lmysqlpp',
            \ '-lsource-highlight',
            \ '-lfmt',
        \ ],
        \ 'runCmd': '${execPath}'
    \ },
    \ 'c': {
        \ 'compileCmd': 'gcc -std=c11 -I${fileDirname} -I${workspaceFolder}include -o ${execPath} ${file}',
        \ 'runCmd': '${execPath}'
    \ },
    \ 'python': {
        \ 'runCmd': 'python ${file}'
    \},
    \ 'go': {
        \ 'compileCmd': 'go build -o ${execPath} ${file}',
        \ 'runCmd': '${execPath}'
        \ }
\ }

| 按键 | 作用 | | ----------- | -------------------------------------- | | <space>lr | 运行程序(若时间戳较未变则不编译) | | <space>lR | 强制编译并运行程序 | | <space>li | 快速打开输入窗口 | | <F10> | 开启或关闭程序运行窗口(如果存在的话) |

注意<space>li快速打开窗口,会自动使用 QuickrunRedirect命令将当前buffer将要运行的程序重定向到该输入窗口。 离开输入窗口时会自动写回硬盘。

注意:对于C++,补全引擎YCM、语法检测引擎ALE、快速运行程序Runner所需要的默认C++标准都由 YCM读取的.ycm_extra_conf.py中设置的标准确定,该文件从源文件目录开始向上搜索,若无此文件则默认C++20

注意:对于C++,<space>ll手动启动所有linter进行静态语法解析,包括clang-tidy(这家伙启动所有checker后太慢了)

调试

调试模块基于vimspector

debug

| 按键 | 作用 | | -------- | -------------- | | <F5> | 继续 | | <S-F5> | 暂停 | | <F6> | 重启 | | <S-F6> | 停止 | | <F7> | Step Over | | <S-F7> | Step to Cursor | | <F8> | Step Into | | <S-F8> | Step Out | | <F9> | 设置断点 | | <S-F9> | 设置函数断点 | | <C-F9> | 设置条件断点 | | <F9> | 设置断点 | | <S-F9> | 设置函数断点 | | <C-F9> | 设置条件断点 |

Markdown渲染预览

UltiSnips目录提供了一些markdown的代码补全片段。 此外,还对markdown的语法高亮进行了调整;

| 按键 | 作用

Related Skills

View on GitHub
GitHub Stars97
CategoryDevelopment
Updated5mo ago
Forks14

Languages

Vim Script

Security Score

97/100

Audited on Oct 23, 2025

No findings