Mac SpaceVim 配置python,java,go,markdown,LaTex 环境及使用指南

  • neovim终端
    :terminal 进入shell模式
    <C-\><C-n> 退出终端
    <M-i> 重新进入

  • 文件树操作

    • SpaceVim使用vimfiler作为默认的文件树,默认的键绑定是F3,而SpaceVim也提供SPC f t和SPC f T打开文件树。将文件浏览器更改为nerdtree:let g:spacevim_filemanager = 'nerdtree'
    • 支持VCS集成,会出现列状态,这个功能可能会让vimfiler变慢,所以默认情况下是不启用的。启用此功能,添加let g:spacevim_enable_vimfiler_gitstatus = 1到您的自定义配置
    • 键绑定
    键绑定 描述
    <F3> 要么 SPC f t 切换文件浏览器在文件树缓冲区内
    <Left> 要么 h 去父节点并折叠展开的目录
    <Down> 要么 j 选择下一个文件或目录
    <Up> 要么 k 选择以前的文件或目录
    <Right> 要么 l 打开选定的文件或展开目录
    Ctrl+j 取消映射
    Ctrl+l 取消映射
    E 取消映射
    N 在corsor下创建新文件
    yy 将文件完整路径复制到系统剪贴板
    yY 将文件复制到系统剪贴板
    P 将文件粘贴到光标所在的位置
    . 切换可见的忽略文件
    sv 分割编辑
    sg 垂直分割编辑
    p 预览
    i 切换到目录历史记录
    v 快速查看
    gx Execute with vimfiler associated
    ' 切换标记当前行
    V 清除所有标记
    Ctrl+r 重绘
    l or Enter 打开文件
    sg 在垂直分割的窗口中打开文件
    sv 在水平分割窗口中打开文件
  • 窗口操作

    快捷键 描述
    SPC w TAB 切换到当前帧中的交替窗口(来回切换)
    SPC w = 平衡拆分窗口
    SPC w b 迫使焦点回到小型缓冲器(TODO)
    SPC w c 无忧无虑的阅读当前窗口
    SPC w C 通过vim-choosewin无忧无虑地阅读其他窗口
    SPC w d 删除一个窗口
    SPC u SPC w d 删除一个窗口及其当前的缓冲区(不删除文件)(TODO)
    SPC w D 使用vim-choosewin删除另一个窗口
    SPC u SPC w D 使用vim-choosewin(TODO)删除另一个窗口及其当前缓冲区
    SPC w t 切换窗口专用(专用窗口不能被模式重用)(TODO)
    SPC w f 切换跟随模式(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,现在只支持最大化)
    SPC w M 使用vim-choosewin交换窗口
    SPC w o 循环和焦点之间的标签
    SPC w p m 在弹出窗口中打开消息缓冲区(TODO)
    SPC w p p 关闭当前粘弹出窗口(TODO)
    SPC w r 向前旋转窗户
    SPC w R 向后旋转窗口
    SPC w s or SPC w - 水平分割
    SPC w S 水平分割和聚焦新窗口
    SPC w u 撤消窗口布局(用于有效撤消关闭的窗口)(TODO)
    SPC w U 重做窗口布局(TODO)
    SPC w v or SPC w / 垂直分裂
    SPC w V 垂直分割和聚焦新窗口
    SPC w w 循环和重点之间的窗口
    SPC w W 使用vim-choosewin选择窗口
  • 查看当前路径
    :pwd
    切换当前路径到当前打开文件所在路径
    :cd %:p:h
    解释: %表示当前文件名,%:p表示包含文件名的全部路径,%:p:h表示文件所在路径(head of the full path)
    切换当前窗口的当前路径到当前打开文件所在路径
    :lcd %:p:h

  • 如何在打开文件的同时,自动切换当前路径呢?
    在vimrc中添加
    set autochdir
    autochdir已可应付大多数情况,但可能和某些插件冲突。我更推荐:
    autocmd BufEnter * silent! lcd %:p:h
    上述一句设置已刻应付绝大多数情况,你还可自定义"在打开那些文件时不自动切换",比如在打开/tmp文件夹下的文件时不自动切换,则设置如下:
    autocmd BufEnter * if expand("%:p:h") !~ '^/tmp' | silent! lcd %:p:h | endif
    windows下,对包含空格的路径会有问题,修改如下:
    autocmd BufEnter * silent! lcd %:p:h:gs/ /\ /

  • Maven 支持

    • 这个功能其实是java语言的支持,我在一个git管理的项目下创建了一个maven的项目,【事实证明各个项目还是分开比较好】,导致Maven一直无法找到我的项目路径,即使用上一步骤的方法切换路径,还是会回到git的目录下。

    • SpaceVim中的项目由vim-projectorist和vim-rooter管理,当文件树中遇到.git目录或.projections.json文件时,vim-rooter将找到项目的根目录。这个就是回到git目录的原因吧。

    • 如果你用SpaceVim开发Maven项目,我觉得步骤会是这样的::terminal 进入shell模式,mvn archetype:generate -DgroupId=com.mico -DartifactId=genqrcode -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false[这里只是举个例子,创建了一个叫genqrcode的Web项目,maven版本是3.5],接着进入到genqrcode目录 cd genqrcode,touch .projections.json,让vim-rooter识别到这是一个项目,文件树进入到genqrcode目录,执行:pwd,查看当前路径,如果不是,使用:cd [path]切换到你的项目路径,接着你就可以使用SpaceVim的maven支持了,当你在你的项目路径下的pom.xml中添加jar依赖时,相关的javaautocomplete也会自动添加,实现于vim-javacomplete2插件的Searches class files automatically, using maven, gradle or Eclipse's .classpath file to append completion classpath功能:

      javacomplete2和maven

      javacomplete2和maven

    • java模式下的快捷键

      • 导包
      快捷键 描述
      F4 (插入/正常模式) 在光标下导入类
      SPC l I 导入缺失的类
      SPC l R 删除未使用的类
      SPC l i 光标下的智能导入类
      <C-j>I (插入模式) 导入缺失的类
      <C-j>R (插入模式) 删除未使用的类
      <C-j>i (插入模式) 光标下的智能导入类
      • 代码生成器快捷键
      模式 快捷键 描述
      正常 SPC l g A 生成访问器
      正常/视觉 SPC l g s 生成setter访问器
      正常/视觉 SPC l g g 生成getter访问器
      正常/视觉 SPC l g a 生成setter和getter访问器
      正常 SPC l g M 生成抽象方法
      插入 <c-j>s 生成setter访问器
      插入 <c-j>g 生成getter访问器
      插入 <c-j>a 生成getter和setter访问器
      正常 SPC l g t 生成toString函数
      正常 SPC l g e 生成equals和hashcode函数
      正常 SPC l g c 生成构造函数
      正常 SPC l g C 生成默认的构造函数
      • 代码格式化
        格式化当前缓冲区的默认键绑定是SPC b f。而这个键绑定是在格式层中定义的。您也可以使用g=缩进当前缓冲区。
        为了使neoformat支持java文件,你应该安装uncrustify。或下载谷歌的formater jar, 并添加let g:spacevim_layer_lang_java_formatter = 'path/to/google-java-format.jar' 到SpaceVim自定义配置文件。
      • maven 快捷键
      快捷键 描述
      SPC l m i 运行maven clean install
      SPC l m I 运行maven install
      SPC l m p Run one already goal from list
      SPC l m r Run maven goals
      SPC l m R Run one maven goal
      SPC l m t Run maven test
      • 跳转
      快捷键 描述
      SPC l j a 源文件 和 对应 test 文件相互跳转
      • jshell,Start a jshell inferior REPL process with SPC l s i.
      快捷键 描述
      SPC l s b send buffer and keep code buffer focused
      SPC l s l send line and keep code buffer focused
      SPC l s s send selection text and keep code buffer focused
      • 运行main方法
        • 贴了这么多快捷键,估计也不知道咋回事,还是来一波细致操作吧:
        • 打开一个java文件,有main方法
        • SPC即空格键,如图
        • 空格实际上是导航键
        • 按l键
        • 按r键
        • 按m键
        • 好了,我想,这么图文解说的话,估计会对快捷键有一个系统的理解,至少知道这一步步怎么来的,按SPC键之后有很多其他的选项,可以逐一去试试。更多演示请看这里
  • Go支持

    • 打开一个go文件
    • 报错vim-go: could not find 'gotags'. Run :GoInstallBinaries to fix it,执行:GoInstallBinaries
    • 报错unrecognized import path "golang.org/x/tools/go/buildutil" (https fetch: Get https://golang.org/x/tools/go/buildutil?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)我试着拿了个梯子,谷歌的那个,还是不行,但是从这里开始,梯子一直开着
    • go get github.com/golang/tools参考
    • 在GOPATH\src\github.com目录下就有tools文件夹
    • 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。
    • 再次执行:GoInstallBinaries
    • 有个叫cmd/keyify的go包安装还是不成功,从github上访问是404,估计是转移了,搜了一下,新地址在https://github.com/dominikh/go-tools/tree/master/cmd/keyify按该git上的教程安装:
    • go get honnef.co/go/tools/cmd/keyify
  • Python

    • sudo pip3 install --upgrade neovim
    • sudo pip2 install --upgrade neovim
    • 对python好像不友好,自带python2.7,我搜索了半天也找不出来有啥办法,又不能把自带的python升级,有点迷 .[已解决,详情查看常见问题,具体的方式是在python文件头上加上#!python3]
  • LaTex科学公式支持

    • 用SpaceVim打开一个以.md结尾的文件,输入$$E=mc^2$$,然后SPC l p会自动打开浏览器,支持实时预览
    • LaTex
    • $$公式$$表示行间公式,本来Tex中使用\(公式\)表示行内公式,但因为Markdown中\是转义字符,所以在Markdown中输入行内公式使用\\(公式\\)
    • MathJax 支持的数学符号表
  • 项目管理

    快捷键 描述
    SPC p f 在当前项目中查找文件
    SPC p / 模糊搜索当前项目中的文本
    SPC p k 杀死当前项目的所有缓冲区
    SPC p t 找到项目的根
    SPC p p 列出所有项目
  • 配置文件

" Dark powered mode of SpaceVim, generated by SpaceVim automatically.
let g:spacevim_enable_debug = 1
let g:spacevim_realtime_leader_guide = 1
call SpaceVim#layers#load('incsearch')
call SpaceVim#layers#load('lang#c')
call SpaceVim#layers#load('lang#elixir')
call SpaceVim#layers#load('lang#go')
call SpaceVim#layers#load('lang#java')
call SpaceVim#layers#load('lang#haskell')
call SpaceVim#layers#load('lang#javascript')
call SpaceVim#layers#load('lang#lua')
call SpaceVim#layers#load('lang#perl')
call SpaceVim#layers#load('lang#php')
call SpaceVim#layers#load('lang#python')
call SpaceVim#layers#load('lang#rust')
call SpaceVim#layers#load('lang#swig')
call SpaceVim#layers#load('lang#tmux')
call SpaceVim#layers#load('lang#vim')
call SpaceVim#layers#load('lang#xml')
call SpaceVim#layers#load('shell')
call SpaceVim#layers#load('tools#screensaver')
let g:spacevim_enable_vimfiler_welcome = 1
let g:spacevim_enable_debug = 1
let g:deoplete#auto_complete_delay = 150
let g:spacevim_enable_tabline_filetype_icon = 1
let g:spacevim_enable_statusline_display_mode = 0
let g:spacevim_enable_os_fileformat_icon = 1
let g:spacevim_buffer_index_type = 1
let g:neomake_vim_enabled_makers = []
let g:clang2_placeholder_next = ''
let g:clang2_placeholder_prev = ''
if executable('vimlint')
    call add(g:neomake_vim_enabled_makers, 'vimlint')
endif
if executable('vint')
    call add(g:neomake_vim_enabled_makers, 'vint')
endif
if has('python3')
    let g:ctrlp_map = ''
    nnoremap <silent> <C-p> :Denite file_rec<CR>
endif
" 这一段必须放在3个if语句的后面,否则会导致python的提示不生效
let g:chromatica#libclang_path='/Users/micocube/clang+llvm-5.0.1/lib'
let g:python_host_prog = '/usr/bin/python'
let g:python3_host_prog = '/Library/Frameworks/Python.framework/Versions/3.6/bin/python3'
let g:loaded_python_provider = 1
let g:spacevim_enable_guicolors = 0
let g:jedi#force_py_version = 3
  • 常见问题

    Where should I put my configration?

    SpaceVim load custom global configuration from ~/.SpaceVim.d/init.vim. It also support project specific configration, That means it will load .SpaceVim.d/init.vim from the root of your project.

    E492: Not an editor command: ^M

    The problem was git auto added ^M when cloning, solved by:

    git config --global core.autocrlf input
    

    Why SpaceVim can not display default colorscheme?

    By default, SpaceVim use true colors, so you should make sure your terminal support true colors, This is an articl about what is true colors and the terminals which support true colors.

    Why I can not update plugins?

    Sometimes you will see Updating failed, The plugin dir is dirty. Since the dir of a plugin is a git repo, if the directory is dirty, you can not use git pull to update plugin. To fix this issue, just move your cursor to the error line, and press gf, then run git reset --hard HEAD or git checkout .. for more info, please read documentation of git.

    How can I run the Python3 program?

    已经向作者提交了issue,并且很快解决了,没看懂不要紧,要在mac 版本的SpaceVim上运行python3程序只需在行首加上#!python3,前提是你在命令行能使用python3命令,当然你写全路径也行,但是python3!之间不能有空格

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,083评论 9 467
  • 曾经使用了几年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。...
    Sylar丶阅读 874评论 0 0
  • 我在大树下种花 她烧炉子 草扇子噗噗噗 阵阵灰扬起 咳咳咳 水咕嘟嘟吹向天 她放进冰糖,小鸭梨儿 我搬着木凳,坐在...
    锄风少年阅读 183评论 0 2
  • 宁博Villa阅读 282评论 2 1