neovim 安装配置

neovim 安装配置

安装neovim

github下载安装地址

最新版本下载地址

neovim直接解压,在bin目录下直接执行nvim-qt.exe或者在cmd命令行执行nvim.exe

将neovim添加到path环境变量中,方便在cmd命令行直接可以运行:

image-20211104212446914

windows下使用Chocolate包管理工具进行安装neovim,安装成功之后,不用添加环境变量;

要使用chocolate工具,需要先安装,怎么安装这个包管理工具,大家可以自行百度:

choco install neovim

neovim配置

  • 定义neovim变量

    默认情况下neovim用的所有插件都会放到c盘,如果大家觉得C盘空间紧张,那么需要进行调整,比如放到D盘,可以按照下面方式操作:

    默认 XDG_CONFIG_HOME,XDG_DATA_HOME为空,会使用系统的LOCALAPPDATA变量作为配置文件的读取和插件的安装位置,默认都是在c盘的目录下,为了避免重装系统后neovim需要重配置的问题,我们将这两个位置调整一下,我们需要定义下面两个变量,路径可以根据自己的实际情况进行修改。

    # 定义neovim配置文件的路径
    XDG_CONFIG_HOME = D:\program\Neovim\config
    # 定义插件等的路径
    XDG_DATA_HOME = D:\program\Neovim\config
    
image-20211106192749837
  • 创建初始化文件

    创建neovim的配置文件,先查看一下在windows下配置文件所在的路径

    # 打开neovim
    nvim
    # 打开后输入直接输入下面的命令
    :help config
    
    image-20211105184242013

    在windows下默认的neovim的配置文件的路径在~/AppData/Local/nvim/init.vim,上面我们定义了两个变量,配置文件放在自定义的路径下

    # 在powershell下查看一下,下面的两个变量是否存在
    $env:XDG_CONFIG_HOME
    $env:XDG_DATA_HOME
    # 定义neovim配置文件的路径
    XDG_CONFIG_HOME = D:\program\Neovim\config
    # 定义插件等的路径
    XDG_DATA_HOME = D:\program\Neovim\config
    
    image-20211106213730314

    为方便插件及配置文件的管理,创建了不同功能的目录,这些目录是按照neovim官网的建议创建;

    在$XDG_CONFIG_HOME/nvim路径下创建:/after,/ftplugin,/lua,/pack,/plugged/,/syntax目录

    创建init.lua为neovim的主配置文件,plugin.vim为插件配置文件;

    关于neovim的配置文件的目录结构可以参考lua的中文手册,有条件的可以看github,打不开的话可以看我gitee同步过来的手册:https://gitee.com/teachtea/nvim-lua-guide-zh

    image-20211106210011416

    init.vim或者init.lua文件;其他目录视情况创建,为方便的进行插件管理,建议创建如下的目录结果

    📂 $XDG_CONFIG_HOME/nvim
    ├── 📁 after
    ├── 📁 ftplugin
    ├── 📂 lua
    │  ├── 🌑 myluamodule.lua
    │  └── 📂 other_modules
    │     ├── 🌑 anothermodule.lua
    │     └── 🌑 init.lua
    ├── 📁 pack
    ├── 📁 plugged
    ├── 📁 syntax
    └── init.lua
    └── plugin.vim
    

neovim插件安装

  • 安装neovim插件管理器:vim-plug

    使用vim-plug进行nvim的插件管理,当然还有其他的包管理工具,根据自己的喜好可以自行安装;

    默认情况下vim-plug下载插件的位置是github,下载速度大家懂得,参考网上的教程我修改了vim-plug的下载路径为国内github的镜像站,有兴趣的可以看一下改成其他的镜像站;

    大家可以从我的gitee下载:https://gitee.com/teachtea/vim-plug/raw/master/plug.vim

    在powershell 下执行下面命令安装vim-plug脚本

    iwr -useb https://gitee.com/teachtea/vim-plug/raw/master/plug.vim |`
        ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force
    
  • 安装插件

    我们将安装插件的脚步放在一个单独的文件中,方便管理,lua文件不识别vim-plug包管理命令,当然可以使用其他lua支持的包管理工具,我这使用单独的文件进行插件管理,会更清晰一些;

    打开nvim时,默认使用的是init.lua或者init.vim文件,可以指定其他的配置文件:nvim -u plugin.vim

    编辑plugin.vim文件,先安装一个lsp的插件

    # 要安装的插件包裹在call plug#begin()和call plug#end()中间
    call plug#begin()
    Plug 'neovim/nvim-lspconfig'
    call plug#end()
    

    编辑好plugin.vim后,我们使用下面命令重新打开nvim,然后执行命令进行插件安装

    # 打开nvim,使用指定的配置文件打开
    nvim -u plugin.vim
    # 执行安装命令,安装全部插件,写在plug后面的插件就会被安装
    :PlugInstall
    

    如果收入名:PlugInstall不存在,说明vim-plug插件安装有问题,如果是自定的插件路径,注意上面两个变量配置是否正确


    安装插件

    注意第一次安装插件可能会有一些告警信息,可以忽略,有重度强迫症的患者可以执行下面语句进行治疗:

    注意是git命令,插件的下载依赖于git命令,没有安装git需要提前安装好。

    git config --global http.sslVerify true
    
    image-20211105212311455
    image-20211105212349190
  • 插件配置

    在lua下面创建mappings.lua文件,里面存放快捷键的配置。

    --重命名lua下面的几个命令的名称方面后面使用
    local cmd = vim.cmd
    local fn = vim.fn
    local g = vim.g
    local opt = vim.opt
    
    local function map(mode,lhs,rhs,opts)
      local options = {noremap=true}
      if opts then options=vim.tbl_extend('force',options,opts) end
      vim.api.nvim_set_keymap(mode,lhs,rhs,options)
    end
    
    --配置选项
    cmd 'colorscheme desert'
    opt.completeopt={'menuone','noinsert','noselect'}
    opt.expandtab=true
    opt.hidden=true
    opt.ignorecase=true
    opt.joinspaces=false
    opt.list=true
    opt.number=true
    opt.relativenumber=true
    opt.scrolloff=4
    opt.shiftwidth=2
    opt.sidescrolloff=8
    opt.smartcase=true
    opt.smartindent=true
    opt.splitbelow=true
    opt.splitright=true
    opt.tabstop=2
    opt.termguicolors=true
    opt.wildmode={'list','longest'}
    opt.wrap=false
    
    --键盘映射
    map('', '<leader>c', '"+y')       -- Copy to clipboard in normal, visual, select and operator modes
    map('i', '<C-u>', '<C-g>u<C-u>')  -- Make <C-u> undo-friendly
    map('i', '<C-w>', '<C-g>u<C-w>')  -- Make <C-w> undo-friendly
    
    -- <Tab> to navigate the completion menu
    map('i', '<S-Tab>', 'pumvisible() ? "\\<C-p>" : "\\<Tab>"', {expr = true})
    map('i', '<Tab>', 'pumvisible() ? "\\<C-n>" : "\\<Tab>"', {expr = true})
    
    map('n', '<C-l>', '<cmd>noh<CR>')    -- Clear highlights
    map('n', '<leader>o', 'm`o<Esc>``')  -- Insert a newline in normal mode
    
    -------------------- TREE-SITTER ---------------------------
    --local ts = require 'nvim-treesitter.configs'
    --ts.setup {ensure_installed = 'maintained', highlight = {enable = true}}
    
    -------------------- LSP -----------------------------------
    --local lsp = require 'lspconfig'
    --local lspfuzzy = require 'lspfuzzy'
    
    -- We use the default settings for ccls and pylsp: the option table can stay empty
    --lsp.ccls.setup {}
    --lsp.pylsp.setup {}
    --lspfuzzy.setup {}  -- Make the LSP client use FZF instead of the quickfix list
    
    map('n', '<space>,', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>')
    map('n', '<space>;', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>')
    map('n', '<space>a', '<cmd>lua vim.lsp.buf.code_action()<CR>')
    map('n', '<space>d', '<cmd>lua vim.lsp.buf.definition()<CR>')
    map('n', '<space>f', '<cmd>lua vim.lsp.buf.formatting()<CR>')
    map('n', '<space>h', '<cmd>lua vim.lsp.buf.hover()<CR>')
    map('n', '<space>m', '<cmd>lua vim.lsp.buf.rename()<CR>')
    map('n', '<space>r', '<cmd>lua vim.lsp.buf.references()<CR>')
    map('n', '<space>s', '<cmd>lua vim.lsp.buf.document_symbol()<CR>')
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容