IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> neovim 安装配置 -> 正文阅读

[开发工具]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插件安装有问题,如果是自定的插件路径,注意上面两个变量配置是否正确

    img

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

    注意是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>')
    
    
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 09:03:29  更:2021-11-26 09:05:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:41:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码