neovim 安装配置
安装neovim
github下载安装地址
最新版本下载地址
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>')
|