# 基础知识

houdunren.com @ 向军大叔

xj-small

插件安装一般使用 vim-plug 管理,基本步骤如下

  • 以下代码中以 Plug 开始的要放在 ~/.config/nvim/init.vim 文件中
  • 执行 source $INITVIM 生新加载配置
  • 在 neovim 中执行命令 :PlugInstall 进行安装

# 扩展推荐

# coc-phpls

coc-phpls 是php 语言的代码提示插件

Untitled

需要先安装 Intelephense

$ npm i intelephense -g

然后安装插件

:CocInstall coc-phpls

需要通过命令 :CocConfig 进行配置

{
  "languageserver": {
    "intelephense": {
      "command": "intelephense",
      "args": ["--stdio"],
      "filetypes": ["php"],
      "initializationOptions": {
        "storagePath": "/tmp/intelephense"
      }
    }
  }
}

如果你有 Intelephense 付费密钥,在 coc-settings.json 文件中添加,使用 :CocConfig 可编辑该文件

{
    "intelephense.licenceKey": "your licence key",
}

# vim-startify

vim-startify 在启动窗口显示最近打开的文件

Startify in action!

使用 vim-plug 进行安装

Plug 'mhinz/vim-startify'

# LeaderF

LeaderF 用于文件检测类似于 vscode 中的 ctrl+p

And Mode

  1. 配置软件环境,需要先使用condabrew

    conda install -c conda-forge pynvim
    pip3 install --user --upgrade neovim
    brew install global
    sudo dnf install ctags
    
  2. init.vim中定义插件

    Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
    
  3. init.vim 中定义配置

    "弹窗显示结果
    let g:Lf_WindowPosition = 'popup'
    
    "搜索当前文件的方法
    nmap <LEADER>o :LeaderfFunction<CR>
    
  4. 执行 :PlugInstall 安装插件

键盘指令

命令 映射 说明
:LeaderfFile f 搜索当前目录下的文件
:LeaderfBuffer b 搜索当前的Buffer
:LeaderfFunction o (自行设置) 搜索当前文件的方法
:LeaderfMru 搜索最近使用过的文件

LeaderF启动后可以使用的命令

命令 说明
退出 LeaderF
在检索模式和选择模式之间切换
在水平窗口打开
<C-]> 在垂直窗口打开
在新标签打开

# Plug 'ap/vim-css-color

ap/vim-css-color 用于显示css中定义的颜色

img

# vim-airline

vim-airline 是一款状态栏美化插件

img

使用 vim-plug 安装插件

Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'

关闭插件

:AirlineToggle

设置主题风格

命令行输入下面命令

:AirlineTheme 

tab 后会有风格选择界面如下

image-20200109145045335

# ale

ale 用于语法检查和语义错误

安装插件

Plug 'dense-analysis/ale'

# nerdtree

目录文件树插件,速度很快

Plug 'preservim/nerdtree'

常用指令介绍

指令 说明
m 调出文件管理子菜单
o 打开目录

# coc-explorer

coc-explorer 显示目录文件目录树

安装

:CocInstall coc-explorer

配置快捷键,在 ~/.config/nvim/init.vim 配置文件中定义

:nmap ge :CocCommand explorer<CR>

打开目录树后,使用 ? 可以查看到帮助说明

# vim-php-cs-fixer

vim-php-cs-fixer 用于格式化php代码

命令行安装 php-cs-fixer 软件

brew install php-cs-fixer

init.vim 文件中配置

Plug 'stephpy/vim-php-cs-fixer'

执行命令安装

:PlugInstall

# nerdcommenter

nerdcommenter 用于快速注释文本

安装插件

Plug 'preservim/nerdcommenter'
指令 说明
c 添加或取消注释
cc 添加注释

# coc-eslint

使用eslint进行代码格式化与校验

Eslint

首先安装eslint

npm install eslint --save-dev

初始项目

npm init

生成.eslintrc.js配置文件

eslint --init

有几项需要选择,其他回车即可

  1. Which framework does your project use?

coc-eslint

下面来安装cod-eslint插件

:CocInstall coc-eslint

需要通过 :CocConfig 进行配置

"coc.preferences.formatOnSaveFiletypes": [
    "css",
    "Markdown",
    "javascript",
    "less",
    "sass"
  ],

# html/css

使用 coc.vim 安装以下插件增强html/css/js/vue代码补全,其它语言请阅读手册

:CocInstall coc-tsserver coc-json coc-html coc-css coc-vetur coc-ember coc-snippets coc-emmet coc-highlight

# UltiSnips

UltiSnips 是非常好用的代码片段插件

Untitled

安装插件

Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

使用 tab 键确定使用的代码片段

# wakatime

用于记录编码历史

image-20200109111556323

安装插件

Plug 'wakatime/vim-wakatime'

执行命令添加 APIKEY

:WakaTimeApiKey

image-20200109110638411

# auto-pairs

Auto-pairs 自动闭合扩号

Plug 'jiangmiao/auto-pairs'

# vim-fugitive

vim-fugitive 是GIT管理插件

安装插件

Plug 'tpope/vim-fugitive'

常用命令

命令 说明
:Gdiff 显示修改差异
:Gblame 提交历史记录
:Gstatus 调出git status查看当前状态
:Gcommit 提交当前文件,输入命令Gwrite保存提交

# vim-gitgutter

vim-gitgutter 显示文件的编辑状态

image-20200109180440260

安装插件

Plug 'airblade/vim-gitgutter'

# gv.vim

gv.vim 快速查找GIT提交记录

安装插件

Plug 'tpope/vim-fugitive'
Plug 'junegunn/gv.vim'

基本命令

命令 说明
:GV 打开提交浏览器
:GV! 将仅列出影响当前文件的提交
:GV? 用当前文件的修订填充位置列表

image-20200109182343954

# 配置汇总

下面是向军大叔的配置项,你可以在此基础上定制。

# init.vim

~/.config/nvim/init.vim 配置内容如下

"============基础配置============
syntax on
set number
set ts=2
set expandtab
set autoindent
"滚动时距离底部有6行
set scrolloff=6

"============键盘映射============ 
"前缀键空格
let mapleader=" "
nmap <C-s> :w<CR>
nmap <C-q> :q<CR>
nmap H <Home>
nmap L <End>
nmap , :
imap jj <Esc>
nmap J 5j
nmap K 5k
"重新加载配置文件
nmap <C-r> :source ~/.config/nvim/init.vim<CR>
"分屏热键
nmap sl :set splitright<CR>:vsplit<CR>
nmap sh :set nosplitright<CR>:vsplit<CR>
nmap sk :set nosplitbelow<CR>:split<CR>
nmap sj :set splitbelow<CR>:split<CR>
"窗口切换
nmap <LEADER>w <C-w>
nmap <LEADER>k <C-w>k
nmap <LEADER>j <C-w>j
nmap <LEADER>h <C-w>h
nmap <LEADER>l <C-w>l
"窗口缩放
nmap - :vertical resize-5<CR>
nmap = :vertical resize+5<CR>
"============coc-explorer============
"目录树
nmap ge :CocCommand explorer <CR>

"============Yggdroot/LeaderF============
"弹窗显示结果
let g:Lf_WindowPosition = 'popup'
"搜索当前文件的方法
nmap <LEADER>o :LeaderfFunction<CR>

"============stephpy/vim-php-cs-fixer============
let g:php_cs_fixer_level = "symfony" 
let g:php_cs_fixer_config = "default"
let g:php_cs_fixer_config_file = '.php_cs' " options: --config
let g:php_cs_fixer_php_path = "php"               " Path to PHP
let g:php_cs_fixer_enable_default_mapping = 1     " Enable the mapping by default (<leader>pcd)
let g:php_cs_fixer_dry_run = 0                    " Call command with dry-run option
let g:php_cs_fixer_verbose = 0                    " Return the output of command if 1, else an inline information.
autocmd BufWritePost *.php silent! call PhpCsFixerFixFile()

"============vim-airline============
"显示tab和buffer
"let g:airline#extensions#tabline#enabled = 1
"选择主题
let g:airline_theme='molokai'

"============插件列表============
call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'mhinz/vim-startify'
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
Plug 'ap/vim-css-color'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'dense-analysis/ale'
Plug 'stephpy/vim-php-cs-fixer'
Plug 'preservim/nerdcommenter'
Plug 'wakatime/vim-wakatime'
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'jiangmiao/auto-pairs'
call plug#end()

# COC

安装的COC插件

:CocInstall coc-css coc-explorer coc-html coc-snippets coc-ember coc-json coc-emmet coc-phpls coc-tsserver coc-eslint coc-highlight coc-prettier coc-vetur coc-git coc-svg

.config/nvim/coc-settings.json 内容如下

{
  "coc.preferences.formatOnSaveFiletypes": [
    "css",
    "Markdown",
    "javascript",
    "less",
    "sass"
  ],
  "languageserver": {
    "intelephense": {
      "command": "intelephense",
      "args": ["--stdio"],
      "filetypes": ["php"],
      "initializationOptions": {
        "storagePath": "/tmp/intelephense"
      }
    }
  }
}