0%

SPACE-VIM 安装及配置

安装 NEOVIM

neovim是基于vim的一款编辑器 操作与vim大致相同 手感更好

PPA安装

  1. 加入PPA源

    apt install software-properties-common && add-apt-repository ppa:neovim-ppa/unstable

  2. 安装依赖

    apt install -y python-dev python-pip python3-dev python3-pip

  3. 安装neovim

    apt update && apt install -y sudo apt install python3-neovim

源码编译(推荐)

  1. 安装依赖

    apt install ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config unzip

    apt install gperf libluajit-5.1-dev libunibilium-dev libmsgpack-dev libtermkey-dev libvterm-dev libjemalloc-dev lua5.1 lua-lpeg lua-mpack lua-bitop

    其中libvterm-dev可能找不到

    可以在libvterm找到 下载.deb文件安装

    pip install neovim && pip3 install neovim

  2. 克隆源码

    源码包较大 如果速度慢建议开代理

    git clone https://github.com/neovim/neovim.git

  3. 编译安装

    make -j8 && make install

安装 SPACE-VIM

首先备份.vimrc ( 好吧他会自动给你备份的 )

备份好后使用以下命令一键完成

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

注意在国内可能需要代理 export all_proxy="socks:127.0.0.1:xxxx"

安装好后启动vim/neovim就会自动安装插件

基础配置

安装字体

SPACE-VIM这尿性 字体还非得是Nerd的

nerd里挑选你中意的字体安装

在终端中配置

终端配置首选项

设置首选字体

设置别名

因为有了neovim不想再用vim了

所以$ nvim ~/.zshrc

在最后一行写入alias vim="nvim"

$ source ~/.zshrc

剪切板互通

apt install xsel

然后就可以以"+y的形式把vim的内容复制到+寄存器中

+寄存器就是系统剪切板

安装TabNine

TabNine是一款补全神器

也是目前做的最好的AI补全的软件

用在vim/neovim上面 TabNine提供了两个插件: codota/tabnine-vimtbodt/deoplete-tabnine

这里推荐tbodt/deoplete-tabnine

因为它更快

安装deoplete.nvim

编辑~/.SpaceVim.d/init.toml

在结尾加入

1
2
3
[[custom_plugins]]
name = "Shougo/deoplete.nvim"
merged = false

[options]标签下加入

1
2
# [options]
bootstrap_before = "myspacevim#before"

编辑~/.SpaceVim.d/autoload/myspacevim.vim

myspacevim#before() abort
1
2
3
function! myspacevim#before() abort
let g:deoplete#enable_at_startup = 1
endfunction

安装tbodt/deoplete-tabnine

编辑~/.SpaceVim.d/init.toml

在结尾加入

1
2
3
[[custom_plugins]]
name = "tbodt/deoplete-tabnine"
merged = false

重新进入nvim发现插件就安装好了

但是现在还不能运行TabNine

执行cd ~/.cache/vimfiles/repos/github.com/tbodt/deoplete-tabnine && bash install.sh

之后就能使用TabNine了

其他功能

插件更新

更新名为”plugin_name”的插件

:SPUpdate <plugin_name>

更新所有插件 包括SPACE-VIM自身

:SPUpdate

添加插件

添加 github 上的插件

在 SpaceVim 配置文件中添加 [[custom_plugins]] 片段:

1
2
3
4
[[custom_plugins]]
name = "lilydjwg/colorizer"
on_cmd = ["ColorHighlight", "ColorToggle"]
merged = false

禁用插件

1
2
3
[options]
# 请注意,该值为一个 List,每一个选项为插件的名称,而非 github 仓库地址。
disabled_plugins = ["clighter", "clighter8"]

指令速查

界面元素切换

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

快捷键功能描述
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显示/隐藏工具栏

状态栏

快捷键功能描述
SPC [1-9]跳至指定序号的窗口
快捷键功能描述
SPC t m b显示/隐藏电池状态 (需要安装 acpi)
SPC t m ctoggle the org task clock (available in org layer)(TODO)
SPC t m i显示/隐藏输入法
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显示/隐藏版本控制信息
快捷键UnicodeASCII功能
SPC t 88高亮指定列后所有字符
SPC t ff高亮指定列字符
SPC t ss语法检查
SPC t SS拼写检查
SPC t ww行尾空格检查

文件树中的常用操作

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

快捷键功能描述
<F3>切换文件树
文件树内的快捷键
h移至父目录,并关闭文件夹
j向下移动光标
k向上移动光标
l展开目录,或打开文件
N在光标位置新建文件
y y复制光标下文件路径至系统剪切板
y Y复制光标下文件至系统剪切板
P在光标位置黏贴文件
.切换显示隐藏文件
s v分屏编辑该文件
s g垂直分屏编辑该文件
p预览文件
i切换至文件夹历史
v快速查看
>放大文件树窗口宽度
<缩小文件树窗口宽度
g x使用相关程序执行该文件
'标记光标下的文件(夹)
V清除所有标记
Ctrl+r刷新页面

文本操作命令

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

快捷键功能描述
SPC x a #基于分隔符 # 进行文本对齐
SPC x a %基于分隔符 % 进行文本对齐
SPC x a &基于分隔符 & 进行文本对齐
SPC x a (基于分隔符 ( 进行文本对齐
SPC x a )基于分隔符 ) 进行文本对齐
SPC x a [基于分隔符 [ 进行文本对齐
SPC x a ]基于分隔符 ] 进行文本对齐
SPC x a {基于分隔符 { 进行文本对齐
SPC x a }基于分隔符 } 进行文本对齐
SPC x a ,基于分隔符 , 进行文本对齐
SPC x a .基于分隔符 . 进行文本对齐(for numeric tables)
SPC x a :基于分隔符 : 进行文本对齐
SPC x a ;基于分隔符 ; 进行文本对齐
SPC x a =基于分隔符 = 进行文本对齐
SPC x a ¦基于分隔符 ¦ 进行文本对齐
`SPC x a`基于分隔符 \进行文本对齐
SPC x a SPC基于分隔符 进行文本对齐
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 r基于用户自定义正则表达式进行文本对齐
SPC x a o对齐算术运算符 +-*/
SPC x c统计选中区域的字符/单词/行数
SPC x d w删除行尾空白字符
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 t使用 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 c居中对齐当前段落
SPC x j fset the justification to full (TODO)
SPC x j l左对齐当前段落
SPC x j nset the justification to none (TODO)
SPC x j r右对齐当前段落
SPC x J将当前行向下移动一行并进入临时快捷键状态
SPC x K将当前行向上移动一行并进入临时快捷键状态
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 c交换当前字符和前一个字符的位置
SPC x t C交换当前字符和后一个字符的位置
SPC x t w交换当前单词和前一个单词的位置
SPC x t W交换当前单词和后一个单词的位置
SPC x t l交换当前行和前一行的位置
SPC x t L交换当前行和后一行的位置
SPC x u将选中字符串转为小写
SPC x U将选中字符串转为大写
SPC x w c统计选中区域的单词数
SPC x w dshow dictionary entry of word from wordnik.com (TODO)
SPC xindent or dedent a region rigidly (TODO)

增删注释

注释的增删是通过插件 nerdcommenter 来实现的, 以下为注释相关的常用快捷键:

快捷键功能描述
SPC ;进入注释操作模式
SPC c h隐藏/显示注释
SPC c l注释/反注释当前行
SPC c L注释行
SPC c u反注释行
SPC c p注释/反注释段落
SPC c P注释段落
SPC c s使用完美格式注释
SPC c t注释/反注释到行
SPC c T注释到行
SPC c y注释/反注释同时复制(TODO)
SPC c Y复制到未命名寄存器后注释
SPC c $从光标位置开始注释当前行

小提示:

SPC ; 可以启动一个注释操作符模式,在该模式下,可以使用移动命令确认注释的范围, 比如 SPC ; 4 j,这个组合键会注释当前行以及下方的 4 行。这个数字即为相对行号,可在左侧看到。

完整配置

~/.SpaceVim.d/init.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#=============================================================================
# dark_powered.toml --- dark powered configuration example for SpaceVim
# Copyright (c) 2016-2017 Wang Shidong & Contributors
# Author: Wang Shidong < wsdjeg at 163.com >
# URL: https://spacevim.org
# License: GPLv3
#=============================================================================

# All SpaceVim option below [option] section
[options]
# set spacevim theme. by default colorscheme layer is not loaded,
# if you want to use more colorscheme, please load the colorscheme
# layer
colorscheme = "molokai"
colorscheme_bg = "dark"
# Disable guicolors in basic mode, many terminal do not support 24bit
# true colors
enable_guicolors = true
# Disable statusline separator, if you want to use other value, please
# install nerd fonts
statusline_separator = "arrow"
statusline_inactive_separator = "arrow"
buffer_index_type = 4
enable_tabline_filetype_icon = true
enable_statusline_mode = true
filemanager = "defx"
filetree_direction = "left"
bootstrap_before = "myspacevim#before"

# Enable autocomplete layer
[[layers]]
name = 'autocomplete'
auto-completion-return-key-behavior = "complete"
auto-completion-tab-key-behavior = "smart"

[[layers]]
name = 'shell'
default_position = 'bottom'
default_height = 30

[[layers]]
name = "colorscheme"

[[layers]]
name = "denite"

[[custom_plugins]]
name = "Shougo/deoplete.nvim"
merged = false

[[custom_plugins]]
name = "tbodt/deoplete-tabnine"
merged = false

~/.SpaceVim.d/autoload/myspacevim.vim

1
2
3
4
5
6
7
8
9
function! myspacevim#before() abort
let g:deoplete#enable_at_startup = 1
" CTRL-X and SHIFT-Del are Cut
vnoremap <C-X> "+x
vnoremap <S-Del> "+x
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
vnoremap <C-Insert> "+y
endfunction

以后有看到什么好的插件再更新

欢迎关注我的其它发布渠道