前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超漂亮 vim 配置:space-vim

超漂亮 vim 配置:space-vim

作者头像
用户1558438
发布2018-08-23 17:14:12
2.6K0
发布2018-08-23 17:14:12
举报
文章被收录于专栏:liuchengxuliuchengxu

space-vim 现已支持 Layer ,以下内容大都陈旧,欢迎访问 github 查看最新版本: >>>> space-vim

space-vim
space-vim

space-vim

space-vim
space-vim

space-vim

space-vim
space-vim

space-vim

space-vim
space-vim

space-vim


vim 配置有很多,新手开始可能不太知道要如何修改。 其实很简单,先看一下结构,space-vim 分为三个部分:

  1. .vimrc: 这是所有 vim 配置都会有的配置文件,可见也是必不可少的。其他文件都是为了整个配置 “模块化” 或 “结构化” 而来,非必须,你完全可以自定义。
  2. .vimrc.plug.list: 安装的 vim 插件列表。安装 vim 插件可以选择多种 vim 的插件管理器,个人倾向于 vim-plug, 因为比 Vundle 更“贴心”。
  3. .vimrc.plug.conf: 针对所安装 vim 插件的配置文件。
  4. 定制 space-vim. 简单修改可以写入到 .vimrc.local.vimrc.plug.local, 或者直接在 space-vim 的配置文件中修改。不用想的很高深,作为普通用户,都是很简单的配置语句而已,况且水一个插件也不是很难呢:vim-better-default.

以下内容可能不是最新版本,点击这里查看最新版本.

前言

首先关于 vim , emacs 与 IDE 之间的争论这里并不讨论,也不想评论。 因为我不排斥这其中的任何一个,这些工具我也都在使用,各有所长,自己用着方便就好。

对 vim 稍微有点了解以后,你会发现配置 vim 在思路上其实很简单,无非是一个 .vimrc 文件外加安装各种 vim 插件.不过从一个新手开始的话还是挺折腾的.毕竟,默认情况下连 .vimrc 这个文件都没有,需要自行创建。

其实现在已经有很多有名气的 vim 配置,但还是自己 “孕育” 而成的才能知根知底,追求 “心中有剑” 而不仅是 “手中有剑”。我建议您在初期的时候可以玩一下那些一流的成品配置, 我也是这么做的,我玩过看过 github 上很多有名的配置, 也 ”steal“ 了很多东西。 不过在有了一定基础后,还是自己打造一个属于自己的配置更称心如意。切换环境时也方便。

接下来的部分只是大致介绍一下我的想法,很多方面并不会深入探讨,仅以一个 ”用家“ 的身份说几句。希望 space-vim 能对您有所助益, 尤其是对于初学者而言希望您能在本文有所收获。

space-vim 的键位绑定启发自 spacemacs,这也是为什么叫做 space-vim. 不过只是学些理念,不要被名字误导为会有 spacemacs 里 layer 之类的东西,重点还是落在 vim -_-. 我同时使用 spacemacs 与 vim, 在桌面环境时倾向于 spacemacs, 终端环境时倾向于 vim. 有了 vim 的基础, 也帮助我能够快速上手 spacemacs.

键位设定

space-vim 的前缀键设置为空格键, 来源于 spacemacs. spacemacs 除了外观漂亮,社区驱动等等优点,使用空格键作为 evil 的前缀键可能也是其中一个成功的卖点,因为可以减轻手指负担,毕竟“触手可及”.

代码语言:javascript
复制
let mapleader="\<Space>"

从现代键盘设计的角度看,空格键理应受到优待, 毕竟一个人在 “VIP” 区占了好几个位.即使 HHKB 这样的神器,也有空格键的一席之地.

hhkb

此外,关于 vim 自身的键位设定,开始时能会觉得很奇怪为什么会这样,因为以前的键盘长这样:

ancient_keyboard

ADM-3A

看到这个,也就应该能够理解为什么 vim 使用 hjkl 作为方向键,因为物理条件就是这样.

Prerequisites

在安装 vim 时, 因为不太熟悉可能会走一条捷径, 贪图一个简单的安装命令就搞定, 比如 sudo apt install vim。不过后期可能会因为缺少某些功能而发生一些问题。 因此, 在前期安装 vim 时最好就将这些问题搞定, 比如编译支持 python 的vim, 因为 后面的插件 YouCompleteMe 需要这一特性.

mac 下使用 brew 安装的话非常方便, 可以使用 brew info vim 看有哪些安装选项,并在安装时指定编译选项:

代码语言:javascript
复制
brew install vim --with-lua --with-python3 --with-override-system-vi

其他平台下,网络上有很多指引,这里不再赘述。

另外,有些插件用到的一些工具也要安装, 下面给出 mac 下的一些安装途径, 其他平台下可对应查找安装途径:

代码语言:javascript
复制
# tools used by some plugins, you need install them to make all the plugins work
# you can install them with brew painlessly as followed,
# if you use linux or windows, install them on your own, it is not too difficult.

#### syntastic
npm install jsl jshint
brew install flake8
brew install tidy-html5 shellcheck the_silver_searcher

#### tagbar
brew install ctags

#### youcompleteme
brew install cmake

快捷键

要想使用 vim 提高效率,记住一些快捷键是必然的. 而这种事情都是熟能生巧,一些常用操作用多了自然也就记住了.

介绍具体的快捷键之前,先来了解一下一些基本概念,比如 buffer, 比如 window, 否则即使知道快捷键是什么也不知道该怎么用.如下图中的红色边框区域都是 window , <Leader> w 都是 window 相关操作的快捷键.

比如我们打开了 NERDTree, 那么如何从 NERDTree 中跳回到 buffer 区进行编辑呢?执行窗口操作 <Leader> w l 即可跳到左边的 "窗口". 要知道我第一次进入 NERDTree,不知道怎么回到 buffer 时,没办法只能退出 vim 再重新打开文件 -_|.

intro

下面是一些使用频率较高的快捷键, 经常使用熟练以后,很多操作已经成为一种下意识地行为.

General

这部分大都是一些常用命令的快捷键映射或是默认的一些功能键,由于想精简 .vimrc ,于是我将一些常见且不经常改动的设置包装成一个插件进行载入,详情查看下一部分的 vim-better-default

下面表格中的快捷键按使用频率排序.

Key Binding

Description

Ctrl + c

复制

Ctrl + v

粘贴

<F5>

编译运行c, cpp, python等文件

%

光标停留在括号处,%跳转到对应匹配的括号

<Leader> t n

显示/隐藏 行号(line number)

<Leader> t r

显示/隐藏 相对(relative)行号

<Leader> f v

打开 .vimrc

<Leader> f l

打开 .vimrc.plug.list

<Leader> f c

打开 .vimrc.plug.conf

<Leader> f R

重新加载 vimrc

<Leader> w m

GUI 环境下为窗口最大化切换开关

Plugins

插件并不是越多越好,每个插件我们常用的大多只是其中一小部分功能而已. 插件装多了,vim 一样会慢. 当然也不是配置地功能越强大越好, 选择合适且真正用得到的功能,在这些地方用的舒心即可。

有些插件 “即装即用”,基本不用配置, 或是 "一次配置,终身使用". 有些则稍麻烦一些,不仅是在配置上需要注意,使用上也可能会有一些学习成本,需要有一点耐心才能看到它带来的效果.

我不使用 vim 的标签页 (tab) 功能,所以关于 <Leader> t 的快捷键都不涉及 tab 操作.

Key Binding

Description

<F4>

NERDTree (NERD -> 4个字母)

<F6>

Tagbar (Tagbar -> 6个字母)

<Leader> ?

查看快捷键绑定

<Leader> ;;

智能注释

<Leader> b h

vim起始页(buffer home)(等同于 <Leader> f r)

<Leader> f r

查看最近文件 (file opened recently)

<Leader> x d

去除行尾多余空格 (text delete trailing whitespaces)

vim-better-default

Basic

Key Binding

Mode

Description

<Leader> q

Normal

退出 (quit)

<Leader> Q

Normal

不保存直接退出

<Leader> d

Normal

向下 (down) 移动半屏

<Leader> u

Normal

向上 (up) 移动半屏

U

Normal

重做, redo (对应 u 为撤销,undo)

H

Normal

光标跳转到行首

L

Normal

光标跳转到行尾

Y

Normal

从光标处复制到行尾

<Leader> '

Normal

在 vim 中打开shell

<Leader> s c

Normal

撤销搜索结果高亮

<Leader> t p

Normal

粘贴模式开关 (toggle pastemode)

Ctrl j

Insert

j, 向下移动

Ctrl k

Insert

k, 向上移动

Ctrl h

Insert

h, 向左移动

Ctrl l

Insert

l, 向右移动

jj

Insert

<Esc>

jk

Insert

<Esc>

kk

Insert

<Esc>

;;

Insert

<Esc>

v

Visual

<Esc>

<ESC> 可能是使用非常多的一个键, 如果将 jj, jk 几个快速退出插入模式的快捷键熟记于心,应当会减轻不少 "切换" 的压力。 另外,新手请注意默认情况下 Ctrl + [ 也是 <ESC>. 按一下 v 进入 visual mode, 再按一下离开 visual mode 也很方便。

Buffer

缓冲区操作, <Leader> b.

我最常用的是 <Leader> [1-9], 直接前缀键加上对应的 buffer 编号即可跳转到该 buffer. 在 spacemacs 中, <Leader> [1-9] 是跳转到对应的 window. 因为 emacs 中 window 是有编号的,而 vim 中 window 没有编号, buffer 有编号. 此外很多人会使用 vim-airline,在 vim-airline 中上方也会显示 buffer 的编号,很方便。

Key Binding

Description

<Leader> [1-9]

切换至对应编号[1-9]对应缓冲区

<Leader> b p

上一个 (previous) 缓冲区

<Leader> b n

下一个 (next) 缓冲区

<Leader> b d

删除 (delete) 当前缓冲区

<Leader> b k

杀掉 (kill) 缓冲区

<Leader> b b

显示缓冲区 (buffer)

两个删除缓冲区命令的区别:

  • <Leader> b d : buffer delete.
  • <Leader> b k (实际映射的是bw) : like bd, but really delete the buffer. Everything related to the buffer is lost. All marks in this buffer become invalid, option settings are lost, etc. Don’t use this unless you know what you are doing.
File & Fold

文件操作, <Leader> f.

打开文件时,可能有些人不太喜欢全部折叠起来,<Leader> f 9 即可全部展开.

Key Binding

Description

<Leader> f s

保存(save)文件

<Leader> f [1-9]

设置折叠 (fold) 层次,f 0 相当于全部折叠, f 9 相当于取消折叠全部展开

Window

窗口操作, <Leader> w.

关于分割窗口的功能,我还常常使用 tmux 来实现,因为它也非常值得学习.

Key Binding

Description

<Leader> w j

移动至下方窗口

<Leader> w k

移动至上方窗口

<Leader> w h

移动至左边窗口

<Leader> w l

移动至右边窗口

<Leader> w v

竖直分割窗口, 等同于 `<Leader> w

`

<Leader> w 2

将窗口分割为两列,等同于<Leader> w v

<Leader> w s

水平分割窗口, 等同于 <Leader> w -

<Leader> w d

关闭 (cancel) 当前窗口

<Leader> w q

退出 (quit) 当前窗口,若是最后一个窗口则退出vim

<Leader> w w

在所有窗口中循环移动

<Leader> w r

向右或向下方交换 (replace) 窗口

vim-airline

vim-airline 最好搭配 powerline fonts 字体, space-vim 默认不使用. 不过推荐安装:

代码语言:javascript
复制
git clone https://github.com/powerline/fonts.git ~/.fonts
sh ~/.fonts/install.sh

powerline font 安装完成后,在 .vimrc.plug.conf中的 air-line 中启用字体:

代码语言:javascript
复制
let g:airline_powerline_fonts=1

设置 terminal 字体:

终端环境下 vim 的字体服从于 terminal 的字体设置,GUI 环境下可直接在配置文件中进行设置. 因此安装完成后需要在 terminal 的字体设置中将原有字体改为带有 for powerline 样式的字体,否则会出现状态栏乱码. 比如 iterm2 中字体设置:

powerline_setting

vim-colorschemes

一个多漂亮的主题用的久了,总会没感觉,这个插件集成了很多 vim 的主题,可以自行挑一个在自己机器上显示效果不错的。 比如想修改为 atom:

代码语言:javascript
复制
echo "color atom" >> ~/.vimrc.local

我比较喜欢的是 dracula 和 molokai。

tabular

Key Binding

Description

`<Leader> a

`

按 `

` 对齐

<Leader> a :

按 : 对齐

<Leader> a =

按 = 对齐

可能 <Leader> a | 是我用的比较多的一个,因为经常在 markdown 中对齐表格。

vim-easymotion

easymotion 默认的前缀键为 <Leader><Leader>.

Key Binding

Description

<Leader><Leader> w

单词 (word) 向前快速移动

<Leader><Leader> b

单词向后 (backward) 快速移动

<Leader><Leader> j

行间向下快速移动

<Leader><Leader> k

行间向上快速移动

<Leader><Leader> s

搜索字符 (search) 跳转,双向

<Leader><Leader> f

向前 (forward) 查找字符

为了与 spacemacs 相一致,我还添加了这几个快捷键:

Key Binding

Description

<Leader> j w

单词跳转 (jump to word)

<Leader> j l

行间跳转 (jump to line)

unite.vim

unite.vim 可以为 vim 提供一个命令 UI,可以将一些不常用或不太好设置的快捷键放到里面.

unite.vim 的前缀键为 localleader, 这里设置为 ,.

代码语言:javascript
复制
let maplocalleader=","

⌘ 指该操作存在对应的快捷键

[menu] 指 unite.vim 的前缀键,这里也即 ,.

Key Binding

Description

[menu] m

查看所有可选菜单(menu)

[menu] x

文本 (text)

[menu] f

文件 (file) 与 折叠 (fold)

[menu] p

插件 (plugin), 比如syntastic相关功能

[menu] t

功能开关(toggle)

[menu] v

vim相关

unite.vim 这部分配置需要很多心思打磨,有待完善.

syntastic

在前部分介绍安装事项时,提到要安装一些额外使用的工具,有很多就是 syntastic 这个插件所需要的:

代码语言:javascript
复制
let g:jyntastic_python_checkers=['pyflakes']           " 使用pyflakes 比pylint快, 需要pip安装pyflakes,
let g:syntastic_javascript_checkers=['jsl', 'jshint']  " npm install jsl jshint
let g:syntastic_html_checkers=['tidy', 'jshint']       " brew install tidy-html5

有更多需要的话也可以自行查阅 syntastic 文档。

YouCompleteMe

YouCompleteMe 配置稍显复杂,其实也不复杂,关键在于需要安装一些必要的软件,比如 cmake. 具体可以查阅其安装介绍.

此外一点注意:必须在 .vimrc.plug.conf 中正确设置 Python 路径.如果不设置该选项 YCM 会经常 crashed. python 版本应当与编译 YCM 时的 Python 版本一致, 建议使用 Python3 和绝对路径避免不必要的问题.

代码语言:javascript
复制
let g:ycm_path_to_python_interpreter='/absolute/path/to/python'

Customization

vimrc Related

Description

.vimrc

也可单独作为无插件vim配置

.vimrc.plug.list

安装的vim插件列表

.vimrc.plug.conf

所安装vim各种插件的相关设置

运行 sh ~/.space-vim/uninstall.sh 即可卸载 space-vim.

如果想要修改配置,当然可以选择在我的配置文件上直接修改. 但是如果只是些微调,还是建议您采取以下方式:

  • 将配置信息写入到 ~/.vimrc.local , 比如想要修改主题: echo "color solarized" >> ~/.vimrc.local 然后, <Leader> f R 使得配置生效.
  • 如果想要卸载 space-vim 默认安装的插件, 打开 ~/.vimrc.plug.list 注释掉对应行, 执行 :PluginClean 即可. 如果想要安装另外的插件,将插件信息写入到 ~/.vimrc.plug.local , 比如添加多光标操作vim-multiple-cursors这个插件: Plugin 'terryma/vim-multiple-cursors' 然后 <Leader> f R 使配置生效,并执行 :PlugInstall 进行安装.

最后,GitHub地址: space-vim, 欢迎 fork and star.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.11.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下内容可能不是最新版本,点击这里查看最新版本.
  • 前言
    • 键位设定
      • Prerequisites
        • 快捷键
        • General
        • Plugins
          • vim-better-default
            • Basic
            • Buffer
            • File & Fold
            • Window
          • vim-airline
            • vim-colorschemes
              • tabular
                • vim-easymotion
                  • unite.vim
                    • syntastic
                      • YouCompleteMe
                      • Customization
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档