neovim 安装配置
安装neovim
neovim直接解压,在bin目录下直接执行nvim-qt.exe或者在cmd命令行执行nvim.exe
将neovim添加到path环境变量中,方便在cmd命令行直接可以运行:
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
-
创建初始化文件
创建neovim的配置文件,先查看一下在windows下配置文件所在的路径
# 打开neovim nvim # 打开后输入直接输入下面的命令 :help config
在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
为方便插件及配置文件的管理,创建了不同功能的目录,这些目录是按照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
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
-
插件配置
在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>')