准备工具 neovim、 git
下载插件管理器 packer.nvim
Linux
git clone --depth 1 https://github.com/wbthomason/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvimWindows
git clone https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA
vim-data\site\pack\packer\start\packer.nvim"创建配置文件
Linux 命令
mkdir -p ~/.config/nvim/lua
touch ~/.config/nvim/init.lua
touch ~/.config/nvim/lua/init-packer.luaWindows PowerShell 命令
New-Item -Path "$env:LOCALAPPDATA
vim\lua" -ItemType Directory
New-Item -Path "$env:LOCALAPPDATA
vim\init.lua" -ItemType File
New-Item -Path "$env:LOCALAPPDATA
vim\lua\init-packer.lua" -ItemType File编辑 init-packer.lua 文件,添加下面的内容
rtup(function()
-- Packer can manage itself
use 'wbthomason/packer.nvim'
-- 把要管理的插件放这里,为了方便就把这叫 “管理区” 吧
end)nvim启动后会加载 init.lua 配置文件
编辑init.lua添加下面内容,通过它加载init-packer.lua,注意不要写扩展名
require('init-packer')按重启nvim 执行命令 :PackerSync
以后更改插件配置都需要 :PackerSync 更新和重新生成编译, 具体去看插件主页.
为了方便,当说“lua目录”没有别的说明时,是指 ~/.config/nvim/lua/目录
windows是 C:\Users\你的用户名\AppData\Local vim\lua
自动完成语言服务器配置
return require('packer').startup(function()
-- Packer can manage itself
use 'wbthomason/packer.nvim'
-- lsp(语言服务器)自动配置相关
use 'neovim/nvim-lspconfig' -- Collection of configurations for built-in LSP client
use 'hrsh7th/nvim-cmp' -- Autocompletion plugin
use 'hrsh7th/cmp-nvim-lsp' -- LSP source for nvim-cmp
use 'saadparwaiz1/cmp_luasnip' -- Snippets source for nvim-cmp
use 'L3MON4D3/LuaSnip' -- Snippets plugin
end)在lua目录创建 init-lspconfig.lua 文件 添加下面内容(这是nvim-lspconfig它们的配置)
-- Add additional capabilities supported by nvim-cmp
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
local lspconfig = require('lspconfig')
-- Enable some language servers with the additional completion capabilities offered by nvim-cmp
local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver' }
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
-- on_attach = my_custom_on_attach,
capabilities = capabilities,
}
end
-- luasnip setup
local luasnip = require 'luasnip'
-- nvim-cmp setup
local cmp = require 'cmp'
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
[''] = cmp.mapping.scroll_docs(-4),
[''] = cmp.mapping.scroll_docs(4),
[''] = cmp.mapping.complete(),
[''] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
[''] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
[''] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
}),
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
} 然后在init.lua 添加 require('init-lspconfig.lua')
打开 init-lspconfig.lua 其中有一行 local servers = { 'clangd', 'rust_analyzer', 'pyright', 'tsserver' }
当你用 nvim 打开跟上面列表所列出的语言服务器对应的语言扩展名文件时,会自动生成对应语言服务器的配置。
如果没有安装语言服务器,会提示失败
手动安装语言服务器
安装 C++ 服务器、python服务器
我用的是arch
sudo pacman -S clang
sudo pacman -S python-lsp-server
也可以 pip install python-lsp-server将列表修改成这样,安装了什么服务器,就把对应名称添加入这个列表
local servers = { 'clangd', 'pylsp' }
现在使用 nvim 编写 main.py 或 main.cpp 应该有代码提示、错误检查了
自动安装语言服务器
把 use 'zhengqijun/nvim-lsp-installer' 放到 use 'LoganFeng/nvim-lspconfig' 的上面
在lua目录创建 init-lsp-installer.lua 添加下面内容
require("nvim-lsp-installer").setup({
automatic_installation = true, -- automatically detect which servers to install (based on which servers are set up via lspconfig)
ui = {
icons = {
server_installed = "✓",
server_pending = "➜",
server_uninstalled = "✗"
}
}nvim-lsp-installer 需要 nvim-lspconfig
如果init-lsp-installer.lua的 automatic_installation = true
nvim-lsp-installer 会自动下载 local servers = { 'clangd', 'pylsp' } 所列出的语言服务器(感觉下载有点慢,但它只下载需要的,自己去找可能下载到多余的)
:LspInstallInfo 打开可提供下载的语言服务器预览列表
:LspInstall server 安装语言服务器(将server替换成你要安装的语言服务器的名称 )
:LspUninstall server 卸载语言服务器
:LspUninstallAll 卸载所有语言服务器
目录树插件, 将下面内容放到 管理区 (如果忘了管理区在哪,回文章开头找)
use {
'kyazdani42/nvim-tree.lua',
requires = {
'kyazdani42/nvim-web-devicons', -- 可选依赖,使目录树文件有好看图标
},
config = function() require'nvim-tree'.setup {} end
}在lua目录创建 keymap.lua 添加按键映射, 按Ctrl+n打开关闭目录树
vim.keymap.set('', '', ':NvimTreeToggle')
vim.keymap.set('!', '', ':NvimTreeToggle') 在init.lua添加 require('keymap')
下面的插件和配置代码全放入管理区
注释插件, 基础用法 选择代码 按 gcc 注释或去掉注释
use {
'numToStr/Comment.nvim',
config = function()
require('Comment').setup()
end
}缓冲线插件(文件标签页?)
use{'akinsho/bufferline.nvim',
config = function()
require("bufferline").setup{}
end
}打开多个文件是这样的效果
状态栏
use{'windwp/windline.nvim',
config = function()
require('wlsample.basic')
end
}下图就是 wlsample.basic 的效果 去主页看看有好多样式,替换原来就行
主题插件
use({
'NTBBloodbath/doom-one.nvim',
config = function()
require('doom-one').setup({
cursor_coloring = false,
terminal_colors = false,
italic_comments = false,
enable_treesitter = true,
transparent_background = false,
pumblend = {
enable = true,
transparency_amount = 20,
},
plugins_integrations = {
neorg = true,
barbar = true,
bufferline = false,
gitgutter = false,
gitsigns = true,
telescope = false,
neogit = true,
nvim_tree = true,
dashboard = true,
startify = true,
whichkey = true,
indent_blankline = true,
vim_illuminate = true,
lspsaga = false,
},
})
end,
})最后 init.lua 内容
require('init-packer')
require('init-lspinstaller')
require('init-lspconfig')
require('keymap')我Github下载太慢,每次 :PackerSync 相当痛苦。最后想到这个办法
如果你也有这个问题可以试一试这个方法。
可以去gitee上找(需要注册个账号登录才能看到),实在没有自己拉个。然后在gitee下载(需要改点东西下面讲)。下面全是使用gitee地址。
下载 packer.nvim
Linux
git clone --depth 1 https://gitee.com/LoganFeng/packer.nvim\
~/.local/share/nvim/site/pack/packer/start/packer.nvimWindows
git clone https://gitee.com/LoganFeng/packer.nvim "$env:LOCALAPPDATA
vim-data\site\pack\packer\start\packer.nvim"编辑 packer.nvim包的 packer.lua文件
Linux 在
~/.local/share/nvim/site/pack/packer/start/packer.nvim/lua/packer.lua
Windows 在
~\AppData\Local vim-data\site\pack\packer\start\packer.nvim\lua\packer.lua
其中有一行 default_url_format = 'https://github.com/%s.git'
应该是把 %S 替换成填入的作者名/插件名,'https://github.com/作者名/仓库名.git'
所以把 github 部分改成 gitee。
既然都改成了gitee,那就要用 导入到gitee 后的名称了。每个插件都以它的 gitee克隆地址的红线框部分为准
比如,wbthomason/packer.nvim改成这样LoganFeng/packer.nvim
其他插件也一样按它们在gitee的名称来修改。
我github经常上不去, 我把我找的贴上来,替换上面的 init-packer.lua 内容即可
return require('packer').startup(function()
-- Packer can manage itself
use 'LoganFeng/packer.nvim'
use 'zhengqijun/nvim-lsp-installer'
use 'LoganFeng/nvim-lspconfig'
use 'LoganFeng/nvim-cmp'
use 'LoganFeng/cmp-nvim-lsp'
use 'LoganFeng/cmp_luasnip'
use 'LoganFeng/LuaSnip'
-- 目录树
use {
'zhengqijun/nvim-tree.lua',
requires = {
'zhengqijun/nvim-web-devicons', -- optional, for file icon
},
config = function() require'nvim-tree'.setup {} end
}
--注释/去掉注释 按 gcc
use{ 'zhengqijun/Comment.nvim',
config = function()
require('Comment').setup()
end
}
-- 缓冲线(文件标签页)
use{'HeLiangMsg/bufferline.nvim',
config = function()
require("bufferline").setup{}
end
}
-- 状态栏
use{'pyy-huang-ting/windline.nvim',
config = function()
require('wlsample.basic')
end
}
-- 主题
use({
'LoganFeng/doom-one.nvim',
config = function()
require('doom-one').setup({
cursor_coloring = false,
terminal_colors = false,
italic_comments = false,
enable_treesitter = true,
transparent_background = false,
pumblend = {
enable = true,
transparency_amount = 20,
},
plugins_integrations = {
neorg = true,
barbar = true,
bufferline = false,
gitgutter = false,
gitsigns = true,
telescope = false,
neogit = true,
nvim_tree = true,
dashboard = true,
startify = true,
whichkey = true,
indent_blankline = true,
vim_illuminate = true,
lspsaga = false,
},
})
end,
})
end) | 留言与评论(共有 0 条评论) “” |