北京做环评备案的网站做相同网站违法吗
2026/1/2 7:14:32 网站建设 项目流程
北京做环评备案的网站,做相同网站违法吗,oa系统网站建设方案,影视摄影传媒公司使用lsp-zero.nvim配置Neovim的LSP支持教程 【免费下载链接】lsp-zero.nvim A starting point to setup some lsp related features in neovim. 项目地址: https://gitcode.com/gh_mirrors/ls/lsp-zero.nvim 前言 语言服务器协议(LSP)是现代代码编辑器的核心功能之一它能提供智能代码补全、错误检查、重构等强大功能。本文将详细介绍如何使用lsp-zero.nvim插件为Neovim配置完整的LSP支持环境。环境准备在开始配置前请确保满足以下条件熟悉Neovim基本操作了解普通模式、插入模式和命令模式的切换已安装Neovim v0.10或更高版本系统已安装git工具创建配置文件Neovim的配置文件init.lua位置因操作系统而异可通过以下命令查询nvim --headless -c echo stdpath(config) -c echo -c quit创建该目录并新建init.lua文件。之后可通过命令快速访问配置文件nvim -c edit $MYVIMRC插件管理器安装我们将使用lazy.nvim作为插件管理器它能极大简化插件管理流程。添加以下代码实现自动安装local lazypath vim.fn.stdpath(data) .. /lazy/lazy.nvim if not vim.uv.fs_stat(lazypath) then print(正在安装lazy.nvim...) vim.fn.system({ git, clone, --filterblob:none, https://gitcode.com/gh_mirrors/ls/lsp-zero.nvim, --branchstable, lazypath, }) print(安装完成。) end vim.opt.rtp:prepend(lazypath)添加主题插件以tokyonight.nvim主题插件为例在setup中添加插件require(lazy).setup({ {folke/tokyonight.nvim}, })在文件末尾添加主题设置vim.opt.termguicolors true vim.cmd.colorscheme(tokyonight)LSP核心配置添加必要插件require(lazy).setup({ {folke/tokyonight.nvim}, {neovim/nvim-lspconfig}, {hrsh7th/cmp-nvim-lsp}, {hrsh7th/nvim-cmp}, })基础LSP设置-- 保留侧边栏空间 vim.opt.signcolumn yes -- 配置LSP能力 local lspconfig_defaults require(lspconfig).util.default_config lspconfig_defaults.capabilities vim.tbl_deep_extend( force, lspconfig_defaults.capabilities, require(cmp_nvim_lsp).default_capabilities() ) -- LSP快捷键绑定 vim.api.nvim_create_autocmd(LspAttach, { desc LSP操作, callback function(event) local opts {buffer event.buf} vim.keymap.set(n, K, cmdlua vim.lsp.buf.hover()cr, opts) vim.keymap.set(n, gd, cmdlua vim.lsp.buf.definition()cr, opts) vim.keymap.set(n, gD, cmdlua vim.lsp.buf.declaration()cr, opts) vim.keymap.set(n, gi, cmdlua vim.lsp.buf.implementation()cr, opts) vim.keymap.set(n, go, cmdlua vim.lsp.buf.type_definition()cr, opts) vim.keymap.set(n, gr, cmdlua vim.lsp.buf.references()cr, opts) vim.keymap.set(n, gs, cmdlua vim.lsp.buf.signature_help()cr, opts) vim.keymap.set(n, F2, cmdlua vim.lsp.buf.rename()cr, opts) vim.keymap.set({n, x}, F3, cmdlua vim.lsp.buf.format({async true})cr, opts) vim.keymap.set(n, F4, cmdlua vim.lsp.buf.code_action()cr, opts) end, })语言服务器配置手动安装方式按照语言服务器文档安装所需LSP然后在配置中启用require(lspconfig).gopls.setup({}) require(lspconfig).rust_analyzer.setup({})使用mason.nvim自动管理添加额外插件require(lazy).setup({ {folke/tokyonight.nvim}, {williamboman/mason.nvim}, {williamboman/mason-lspconfig.nvim}, {neovim/nvim-lspconfig}, {hrsh7th/cmp-nvim-lsp}, {hrsh7th/nvim-cmp}, })配置自动安装require(mason).setup({}) require(mason-lspconfig).setup({ handlers { function(server_name) require(lspconfig)[server_name].setup({}) end, }, })使用:LspInstall命令安装语言服务器。Lua语言服务器特殊配置创建.luarc.json文件解决全局变量警告{ runtime.version: LuaJIT, diagnostics.globals: [vim], workspace.library: [$VIMRUNTIME] }自动补全配置配置nvim-cmp实现代码补全local cmp require(cmp) cmp.setup({ sources { {name nvim_lsp}, }, mapping cmp.mapping.preset.insert({ [C-p] cmp.mapping.select_prev_item(), [C-n] cmp.mapping.select_next_item(), [CR] cmp.mapping.confirm({select false}), [C-Space] cmp.mapping.complete(), }), snippet { expand function(args) vim.snippet.expand(args.body) end, }, })完整配置示例手动管理方案local lazypath vim.fn.stdpath(data) .. /lazy/lazy.nvim if not vim.uv.fs_stat(lazypath) then print(Installing lazy.nvim....) vim.fn.system({ git, clone, --filterblob:none, https://gitcode.com/gh_mirrors/ls/lsp-zero.nvim, --branchstable, lazypath, }) print(Done.) end vim.opt.rtp:prepend(lazypath) require(lazy).setup({ {folke/tokyonight.nvim}, {neovim/nvim-lspconfig}, {hrsh7th/cmp-nvim-lsp}, {hrsh7th/nvim-cmp}, }) vim.opt.termguicolors true vim.cmd.colorscheme(tokyonight) vim.opt.signcolumn yes local lspconfig_defaults require(lspconfig).util.default_config lspconfig_defaults.capabilities vim.tbl_deep_extend( force, lspconfig_defaults.capabilities, require(cmp_nvim_lsp).default_capabilities() ) vim.api.nvim_create_autocmd(LspAttach, { desc LSP actions, callback function(event) local opts {buffer event.buf} vim.keymap.set(n, K, cmdlua vim.lsp.buf.hover()cr, opts) vim.keymap.set(n, gd, cmdlua vim.lsp.buf.definition()cr, opts) vim.keymap.set(n, gD, cmdlua vim.lsp.buf.declaration()cr, opts) vim.keymap.set(n, gi, cmdlua vim.lsp.buf.implementation()cr, opts) vim.keymap.set(n, go, cmdlua vim.lsp.buf.type_definition()cr, opts) vim.keymap.set(n, gr, cmdlua vim.lsp.buf.references()cr, opts) vim.keymap.set(n, gs, cmdlua vim.lsp.buf.signature_help()cr, opts) vim.keymap.set(n, F2, cmdlua vim.lsp.buf.rename()cr, opts) vim.keymap.set({n, x}, F3, cmdlua vim.lsp.buf.format({async true})cr, opts) vim.keymap.set(n, F4, cmdlua vim.lsp.buf.code_action()cr, opts) end, }) require(lspconfig).gopls.setup({}) require(lspconfig).rust_analyzer.setup({}) local cmp require(cmp) cmp.setup({ sources { {name nvim_lsp}, }, mapping cmp.mapping.preset.insert({ [CR] cmp.mapping.confirm({select false}), [C-Space] cmp.mapping.complete(), [C-u] cmp.mapping.scroll_docs(-4), [C-d] cmp.mapping.scroll_docs(4), }), snippet { expand function(args) vim.snippet.expand(args.body) end, }, })自动管理方案local lazypath vim.fn.stdpath(data) .. /lazy/lazy.nvim if not vim.uv.fs_stat(lazypath) then print(Installing lazy.nvim....) vim.fn.system({ git, clone, --filterblob:none, https://gitcode.com/gh_mirrors/ls/lsp-zero.nvim, --branchstable, lazypath, }) print(Done.) end vim.opt.rtp:prepend(lazypath) require(lazy).setup({ {folke/tokyonight.nvim}, {williamboman/mason.nvim}, {williamboman/mason-lspconfig.nvim}, {neovim/nvim-lspconfig}, {hrsh7th/cmp-nvim-lsp}, {hrsh7th/nvim-cmp}, }) vim.opt.termguicolors true vim.cmd.colorscheme(tokyonight) vim.opt.signcolumn yes local lspconfig_defaults require(lspconfig).util.default_config lspconfig_defaults.capabilities vim.tbl_deep_extend( force, lspconfig_defaults.capabilities, require(cmp_nvim_lsp).default_capabilities() ) vim.api.nvim_create_autocmd(LspAttach, { desc LSP actions, callback function(event) local opts {buffer event.buf} vim.keymap.set(n, K, cmdlua vim.lsp.buf.hover()cr, opts) vim.keymap.set(n, gd, cmdlua vim.lsp.buf.definition()cr, opts) vim.keymap.set(n, gD, cmdlua vim.lsp.buf.declaration()cr, opts) vim.keymap.set(n, gi, cmdlua vim.lsp.buf.implementation()cr, opts) vim.keymap.set(n, go, cmdlua vim.lsp.buf.type_definition()cr, opts) vim.keymap.set(n, gr, cmdlua vim.lsp.buf.references()cr, opts) vim.keymap.set(n, gs, cmdlua vim.lsp.buf.signature_help()cr, opts) vim.keymap.set(n, F2, cmdlua vim.lsp.buf.signature_help()cr, opts) vim.keymap.set(n, F2, cmdlua vim.lsp.buf.rename()cr, opts) vim.keymap.set({n, x}, F3, cmdlua vim.lsp.buf.format({async true})cr, opts) vim.keymap.set(n, F4, cmdlua vim.lsp.buf.code_action()cr, opts) end, }) require(mason).setup({}) require(mason-lspconfig).setup({ handlers { function(server_name) require(lspconfig)[server_name].setup({}) end, }, }) local cmp require(cmp) cmp.setup({ sources { {name nvim_lsp}, }, mapping cmp.mapping.preset.insert({ [CR] cmp.mapping.confirm({select false}), [C-Space] cmp.mapping.complete(), [C-u] cmp.mapping.scroll_docs(-4), [C-d] cmp.mapping.scroll_docs(4), }), snippet { expand function(args) vim.snippet.expand(args.body) end, }, })结语通过本教程您已完成了从零开始配置Neovim的LSP支持环境。这套配置提供了现代化的插件管理、完整的LSP支持、智能代码补全和便捷的快捷键操作。您可以根据实际需求进一步定制各语言服务器的配置参数或添加更多插件来扩展功能。【免费下载链接】lsp-zero.nvimA starting point to setup some lsp related features in neovim.项目地址: https://gitcode.com/gh_mirrors/ls/lsp-zero.nvim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询