1 Vundle

Vundle安装介绍

1.1 安装前准备

使用vundle需要先安装两个软件:

安装方式一:

C:\> choco install -y git
C:\> choco install -y curl

安装方式二:

Git官网下载

下载curl压缩包,将其解压到任意目录,并在PATH添加环境变量。

例如:解压到 C:\Program Files\curl,然后将C:\Program Files\curl\bin添加到环境变量PATH手动添加环境变量需要重启电脑才能使设置生效)。

C:\Users\Iain>curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: 2017-11-14, security patched: 2019-11-05
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

C:\Users\Iain>git --version
git version 2.28.0.windows.1

C:\Users\Iain>

1.2 安装Vundle

命令行执行命令git clone https://github.com/VundleVim/Vundle.vim.git ~/vimfiles/bundle/Vundle.vim

在这里插入图片描述

1.3 编辑 _vimrc

在用户家目录找到配置文件_vimrc(若没有则新建),在其中添加以下内容(如果想在gvim生效,则添加到_gvimrc

在这里插入图片描述

filetype off
set shellslash
set rtp+=~/vimfiles/bundle/Vundle.vim

call vundle#begin('~/vimfiles/bundle')
"""""""""以后插件都添加到这里"""""""""""
Plugin 'VundleVim/Vundle.vim'
""""""""""""""""""""""""""""""""""""""
call vundle#end()            " required

filetype plugin indent on    " required

注:在gvim的安装目录下(一般为C:\Program Files (x86)\Vim)也有一个_vimrc,那个是软件安装时自带的,里面都是一些系统的设置,不建议在里面添加自定义设置,建议在用户家目录下新建一个同名文件,把自定义设置项添加进去。

1.4 插件安装示例

vundle命令简介

弃用的命令(仍可用,但不建议用)新的命令含义
BundlePlugin
BundleInstall(!)PluginInstall(!), VundleInstall(!)安装插件
BundleUpdatePluginUpdate, VundleUpdate更新插件
BundleSearch(!)PluginSearch(!), VundleSearch(!)搜寻插件
BundleCleanPluginClean(!), VundleClean(!)卸载插件
BundleListPluginList列出已安装插件

1.4.1 安装nerd comment

下面以插件nerd comment为例:

1、打开配置文件_vimrc,添加Plugin 'preservim/nerdcommenter'

在这里插入图片描述
2、另外打开一个vim界面,执行命令:PluginInstall
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.2 nerd comment基本用法

\ca,切换注释方式,比如将注释方式/* */切换成//
\cc,注释当前行
\cs,以”性感”的方式注释
\cA,在当前行尾添加注释符,并进入Insert模式
\cu,取消注释
……
更多用法参见nerd comment详情页

2 vim-plug

vim-plug克隆到~/vimfiles/autoload文件夹下:

PS C:\Users\fy> git clone https://hub.fastgit.org/junegunn/vim-plug.git ~/vimfiles/autoload

然后在.vimrc中以如下方式安装插件:

call plug#begin('~/vimfiles/plugged')
	Plug 'clouduan/vim-searchme'
	Plug 'jiangmiao/auto-pairs'
	Plug 'joshdick/onedark.vim'
	Plug 'lilydjwg/colorizer'
	Plug 'luochen1990/rainbow'
	Plug 'mhinz/vim-startify'
	Plug 'neoclide/coc.nvim', {'branch': 'release'}
	Plug 'octol/vim-cpp-enhanced-highlight'
	Plug 'scrooloose/nerdcommenter'
	Plug 'scrooloose/nerdtree'
	Plug 'yggdroot/indentline'
    Plug 'altercation/vim-colors-solarized'
    Plug 'rhysd/vim-clang-format'
    Plug 'tpope/vim-surround'
call plug#end()

刷新.vimrc,执行:PlugInstall就能安装添加到列表中的插件了。

由于墙的原因,所以使用vim-plug安装或更新插件时经常会失败。但可以通过如下两种方式之一解决:

方式一:修改git的配置文件 .gitconfig
vim-plug是使用git更新和安装插件的。编辑文件 C:\Users\***\.gitconfig,在其中添加如下内容。若没有此文件则新建。

[url "https://ghproxy.com/https://github.com/"]
        insteadOf = https://github.com/
; [url "https://ghproxy.com/https://raw.githubusercontent.com/"]
    ; insteadOf = https:///raw.githubusercontent.com/
; [url "https://github.com.cnpmjs.org/"]
    ; insteadOf = https://github.com/

方式二:修改文件 ~/vimfiles/autoload/plug.vim

在这里插入图片描述

let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
改为
let fmt = get(g:, 'plug_url_format', 'https://git::@github.com.cnpmjs.org/%s.git')
或改为
let fmt = get(g:, 'plug_url_format', 'https://git::@hub.fastgit.org/%s.git')let plug.uri = substitute(plug.uri,
      \ '^https://git::@github\.com', 'https://github.com', '')
改为
let plug.uri = substitute(plug.uri,
    \ '^https://git::@github\.com\.cnpmjs\.org', 'https://github.com.cnpmjs.org', '')
或改为
let plug.uri = substitute(plug.uri,
  \ '^https://git::@hub.fastgit\.org', 'https://hub.fastgit.org', '')
CommandDescription
PlugInstall [name ...] [#threads]Install plugins
PlugUpdate [name ...] [#threads]Install or update plugins
PlugClean[!]Remove unlisted plugins (bang version will clean without prompt)
PlugUpgradeUpgrade vim-plug itself
PlugStatusCheck the status of plugins
PlugDiffExamine changes from the previous update and the pending changes
PlugSnapshot[!] [output path]Generate script for restoring the current snapshot of the plugins

3 使用vim8原生方式安装插件

首先在用户目录下的vimfiles目录中新建一个目录pack,然后根据需要在pack目录下新建各级分类子目录***,目录名任意,在目录***下在创建子目录startopt。这里的目录名除***可以任取之外,其它目录名都不能任意取名。

目录建好之后就可以将插件克隆到startopt中使用了,克隆到start目录中的插件会在vim启动时自动加载;而克隆到opt目录中的插件不会自动加载,需要在vim命令行模式下使用命令packadd plugin_name进行加载。

PS C:\Users\fy\vimfiles> Show-Tree -Path .\pack\ -Depth 3
C:\Users\fy\vimfiles\pack\
├──color_scheme
│  ├──opt
│  │  ├──darcula
│  │  ├──gruvbox
│  │  └──solarized
│  └──start
│     └──onedark
├──syntax
│  ├──opt
│  └──start
│     ├──indent-guides
│     └──vim-ps1
└──utility
   ├──opt
   │  ├──c-support
   │  ├──nerdtree
   │  ├──syntastic
   │  ├──ultisnips
   │  ├──vim-snippets
   │  └──vim-surround
   └──start
      ├──autocomplpop
      ├──colorizer
      ├──nerdcommenter
      ├──rainbow
      ├──vim-clang-format
      └──vim-startify

3.1 手动安装

如上所示,我在C:\Users\fy\vimfiles\pack\目录下自定义了三个目录color_schemesyntaxutility,然后又在这三个目录下创建了startopt,然后就能将下载的插件放在里面了。

注:下面的命令在 powershell 中执行

1、安装插件时,只需按照需要克隆到start或opt目录中

PS > git clone https://ghproxy.com/https://github.com/joshdick/onedark.vim.git C:\Users\fy\vimfiles\pack\color_scheme\start\onedark

2、若是不再需要相应插件,则直接删除该插件目录

PS > rm C:\Users\fy\vimfiles\pack\color_scheme\start\onedark -Recurse -Force

3.2 自动化为 Vim 或 Neovim 安装插件

3.2.1 配置方法

1、将 powershell 版本升到 7.x ,再将下面的函数添加到 powershell 7.x 的配置文件C:\Users\**\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

2、将自己git的配置文件C:\Users\***\.gitconfig修改为如下所示

;[url "https://github.91chi.fun/https://github.com/"]
[url "https://ghproxy.com/https://github.com/"]
        insteadof = https://github.com/
; [url "https://ghproxy.com/https://raw.githubusercontent.com/"]
    ;insteadOf = https:///raw.githubusercontent.com/
; [url "https://hub.fastgit.org/"]
   ; insteadOf = https://github.com/

powershell函数

function kvim-plugin-manager
{
    <#
        .SYNOPSIS
        Vim / Neovim 的插件管理器

        .DESCRIPTION
        Vim / Neovim 的插件管理器。支持插件的安装、卸载、查询,及显示已安装插件列表
        注意:要想使用此函数,首先将 powershell 版本升到 7.x ,再将此函数添加到
            powershell 7.x 的配置文件 C:\Users\**\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

        .PARAMETER install
        要安装的插件的 url,如 https://github.com/tpope/vim-surround 或
        https://github.com/tpope/vim-surround.git,url 可不带 .git 后缀。
        支持同时安装多个插件,安装多个时,url 之间用英文逗号分隔

        .PARAMETER lazyLoad
        插件是否懒加载,若开启此开关则设置为懒加载

        .PARAMETER uninstall
        要卸载的插件的全限定名。
        支持同时卸载多个插件,卸载多个时,插件名之间用英文逗号分隔

        .PARAMETER neovim
        默认为 Vim 安装插件,若开启此开关则为 Neovim 安装插件

        .PARAMETER list
        列出已安装的插件

        .PARAMETER search
        要搜索的插件的名字,不必是插件的全限定名,若名字有空格则用引号括住。
        支持同时搜索多个插件,搜索多个时,插件名之间用英文逗号分隔

        .EXAMPLE
        kvim-plugin-manager -install https://github.com/tpope/vim-surround
        # 为 Vim 安装插件 vim-surround

        .EXAMPLE
        kvim-plugin-manager -install https://github.com/tpope/vim-surround -neovim
        # 为 Neovim 安装插件 vim-surround

        .EXAMPLE
        kvim-plugin-manager -uninstall vim-surround
        # 为 Vim 卸载插件 vim-surround

        .EXAMPLE
        kvim-plugin-manager -uninstall vim-surround -neovim
        # 为 Neovim 卸载插件 vim-surround
        
        .EXAMPLE
        kvim-plugin-manager -list # 列出 Vim 已安装的插件

        .EXAMPLE
        kvim-plugin-manager -list -neovim # 列出 Neovim 已安装的插件

        .EXAMPLE
        kvim-plugin-manager -search "multiple cursors", vimsurround
        # 搜索插件 "multiple cursors", vimsurround
    #>
    param (
        [Parameter(Mandatory, ParameterSetName = 'InstallPlugin')]
        [string[]]$install,

        [Parameter(Mandatory, ParameterSetName = 'UninstallPlugin')]
        [string[]]$uninstall,

        [Parameter(Mandatory, ParameterSetName = 'ListPlugin')]
        [switch]$list,

        [Parameter(Mandatory, ParameterSetName = 'SearchPlugin')]
        [string[]]$search,


        [Parameter(ParameterSetName = 'InstallPlugin')]
        [Switch]$lazyLoad,

        [Parameter(ParameterSetName = 'InstallPlugin')]
        [Parameter(ParameterSetName = 'UninstallPlugin')]
        [Parameter(ParameterSetName = 'ListPlugin')]
        [Switch]$neovim
    )
    begin {
        #basedir为插件的安装目录
        $basedir = if ($neovim) {
            Join-Path $env:LOCALAPPDATA 'nvim\pack\myplugins'
        } else {
            Join-Path $HOME "vimfiles\pack\myplugins"
        }

        if (-not (Test-Path $basedir)) {
            New-Item -Path $basedir -ItemType Directory -Force
        }
    }

    process {
        switch ($PsCmdlet.ParameterSetName) {
            "InstallPlugin" {
                $install | foreach {
                    $plugUrl = $_
                    if (!$plugUrl.EndsWith(".git")) {
                        $plugUrl = $plugUrl + ".git"
                    }

                    #获取插件名
                    $plugName = $plugUrl.Substring($plugUrl.LastIndexOf("/") + 1).Replace(".git", "")

                    #powershell 7.x 才支持三目运算符,及Join-Path多个路径
                    $plugType = $lazyLoad ? "opt" : "start"
                    $plugDir = Join-Path $basedir $plugType $plugName

                    git clone $plugUrl $plugDir

                    #生成插件的帮助文件
                    $plugDocDir = Join-Path $plugDir 'doc'
                    if (Test-Path $plugDocDir) {
                        vim -c "exe 'helptags ${plugDocDir}' |q"
                    }
                }
            }
            "UninstallPlugin" {
                $uninstall | foreach {
                    $plugDir = Join-Path $basedir 'start' $_
                    if (!(Test-Path $plugDir)) {
                        $plugDir = Join-Path $basedir 'opt' $_
                    }
                    Remove-Item $plugDir -Recurse -Force
                }
            }
            'ListPlugin' {
                $prompt = $neovim ? "Neovim INSTALLED PLUGINS:" : "Vim INSTALLED PLUGINS:"
                Write-Host $prompt -ForegroundColor Green
                $output = Show-Tree $basedir -Depth 2
                $output | foreach { Write-Host "`t$($_)" }
            }
            'SearchPlugin' {
                $search | foreach {
                    $search_url = "https://cn.bing.com/search?q=$($_)  site:github.com"
                    $search_url = $search_url -replace " ", "%20"
                    Start-Process msedge $search_url
                }
            }
        }
    }
}

3.1.2 使用方法

PS > man kvim-plugin-manager

NAME
    kvim-plugin-manager
    
SYNOPSIS
    Vim / Neovim 的插件管理器
    
    
SYNTAX
    kvim-plugin-manager -install <String[]> [-lazyLoad] [-neovim] [<CommonParameters>]
    
    kvim-plugin-manager -uninstall <String[]> [-neovim] [<CommonParameters>]
    
    kvim-plugin-manager -list [-neovim] [<CommonParameters>]
    
    kvim-plugin-manager -search <String[]> [<CommonParameters>]
    
    
DESCRIPTION
    Vim / Neovim 的插件管理器。支持插件的安装、卸载、查询,及显示已安装插件列表
    注意:要想使用此函数,首先将 powershell 版本升到 7.x ,再将此函数添加到
        powershell 7.x 的配置文件 C:\Users\**\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
    

PARAMETERS
    -install <String[]>
        要安装的插件的 url,如 https://github.com/tpope/vim-surround 或
        https://github.com/tpope/vim-surround.git,url 可不带 .git 后缀。
        支持同时安装多个插件,安装多个时,url 之间用英文逗号分隔
        
        Required?                    true
        Position?                    named
        Default value                
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    -uninstall <String[]>
        要卸载的插件的全限定名。
        支持同时卸载多个插件,卸载多个时,插件名之间用英文逗号分隔
        
        Required?                    true
        Position?                    named
        Default value                
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    -list [<SwitchParameter>]
        列出已安装的插件,后跟 Vim 或 Neovim
        
        Required?                    true
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    -search <String[]>
        要搜索的插件的名字,不必是插件的全限定名,若名字有空格则用引号括住。
        支持同时搜索多个插件,搜索多个时,插件名之间用英文逗号分隔
        
        Required?                    true
        Position?                    named
        Default value                
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    -lazyLoad [<SwitchParameter>]
        插件是否懒加载,若开启此开关则设置为懒加载
        
        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    -neovim [<SwitchParameter>]
        默认为 Vim 安装插件,若开启此开关则为 Neovim 安装插件
        
        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false
        
    <CommonParameters>
        This cmdlet supports the common parameters: Verbose, Debug,
        ErrorAction, ErrorVariable, WarningAction, WarningVariable,
        OutBuffer, PipelineVariable, and OutVariable. For more information, see
        about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216). 
    
INPUTS
    
OUTPUTS
    
    -------------------------- EXAMPLE 1 --------------------------
    
    PS > kvim-plugin-manager -install https://github.com/tpope/vim-surround
    # 为 Vim 安装插件 vim-surround
    
    
    
    
    
    
    -------------------------- EXAMPLE 2 --------------------------
    
    PS > kvim-plugin-manager -install https://github.com/tpope/vim-surround -neovim
    # 为 Neovim 安装插件 vim-surround
    
    
    
    
    
    
    -------------------------- EXAMPLE 3 --------------------------
    
    PS > kvim-plugin-manager -uninstall vim-surround
    # 为 Vim 卸载插件 vim-surround
    
    
    
    
    
    
    -------------------------- EXAMPLE 4 --------------------------
    
    PS > kvim-plugin-manager -uninstall vim-surround -neovim
    # 为 Neovim 卸载插件 vim-surround
    
    
    
    
    
    
    -------------------------- EXAMPLE 5 --------------------------
    
    PS > kvim-plugin-manager -list # 列出 Vim 已安装的插件
    
    
    
    
    
    
    -------------------------- EXAMPLE 6 --------------------------
    
    PS > kvim-plugin-manager -list -neovim # 列出 Neovim 已安装的插件
    
    
    
    
    
    
    -------------------------- EXAMPLE 7 --------------------------
    
    PS > kvim-plugin-manager -search "multiple cursors", vimsurround
    # 搜索插件 "multiple cursors", vimsurround
    
    
    
    
    
    
    
RELATED LINKS



Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐