我这用vscode主要还是用来简单编辑一下其他代码,功能不多没关系,简单快速就好
但vscode越来越重了,每次启动vscode都会吃一大堆内存,都赶上专门的IDE了
(Visual Studio都比vscode省内存)
而且vscode疯狂推进ai,甚至所有提示都默认走ai,这就很难受了
所以现在就废了vscode,转而使用neovim
但neovim的配置同步能力肯定比不上vscode的
所以采用git仓库存档与文字配置的保险方案,这样只要联网就有办法复原配置
以Windows为例配置,主要使用scoop包管理器
对于Linux,需要使用其他的包管理方式安装需要的工具
使用Lazyvim发行版,配置了neovide作为界面
sudo scoop install neovim -g
scoop install neovide
安装Lazyvim
# required
Move-Item $env:LOCALAPPDATA\nvim $env:LOCALAPPDATA\nvim.bak
# optional but recommended
Move-Item $env:LOCALAPPDATA\nvim-data $env:LOCALAPPDATA\nvim-data.bak
git clone https://github.com/LazyVim/starter $env:LOCALAPPDATA\nvim
Remove-Item $env:LOCALAPPDATA\nvim\.git -Recurse -Force
可选项
# LazyVim
sudo scoop install fd -g
sudo scoop install ripgrep -g
# nvim-treesitter
# 提供Windows平台的C Compiler
sudo scoop install mingw-winlibs -g
# mason
# 部分LSP需要使用npm安装
sudo scoop install nvm -g
nvm install latest
nvm use [LatestVersion]
配置plugin
目前我主要使用的是这套插件搭配
通过Lazy Extra安装
editor.aerial
editor.illuminate
editor.neo-tree
ui.edgy
lang.clangd
lang.dotnet
lang.python
lang.rust
lang.toml
编码配置
配置默认terminal为powershell,配置4空格为缩进
-- lua/config/option.lua
vim.opt.shell = "pwsh"
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
python
由于Lazyvim使用的mason采用了pyright作为python的LSP
而pyright需要配置才能识别虚拟环境中安装的包
# pyproject.toml
[tool.pyright]
venvPath = "."
venv = ".venv"
行为配置
配置终端默认的启动大小,需注意这里通过edgy管理窗口
-- lua/plugin/layout.lua
return {
"folke/edgy.nvim",
opts = function(_, opts)
opts.animate = { enabled = false }
for _, item in ipairs(opts.bottom) do
if item.ft == "snacks_terminal" then
item.size.height = 0.6
end
end
return opts
end,
}
配置neovide
-- init.lua
-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")
-- 仅在 Neovide 环境下生效的配置
if vim.g.neovide then
-- 配置IME行为
local ime_input = vim.api.nvim_create_augroup("ime_input", { clear = true })
local function toggle_ime(args)
vim.g.neovide_input_ime = args.event:match("Enter$") ~= nil
end
vim.api.nvim_create_autocmd(
{ "InsertEnter", "InsertLeave", "CmdlineEnter", "CmdlineLeave" },
{ group = ime_input, pattern = "*", callback = toggle_ime }
)
vim.api.nvim_create_autocmd("VimEnter", {
group = ime_input,
callback = function()
vim.g.neovide_input_ime = false
end,
})
-- 配置字体
vim.o.guifont = "DejaVuSansM Nerd Font:h12"
-- 关闭光标动画的尾迹
vim.g.neovide_cursor_trail_size = 0
-- Ctrl+V的行为
vim.keymap.set('i', '<C-v>', '<C-r>+', { desc = 'Paste clipboard'})
-- Ctrl+Zd的行为
vim.keymap.set("i", "<C-z>", "<C-o>u", { desc = "Undo" })
end