Neovim/zh: Difference between revisions
No edit summary |
mNo edit summary Tags: Mobile edit Mobile web edit |
||
| (25 intermediate revisions by 2 users not shown) | |||
| Line 18: | Line 18: | ||
}} | }} | ||
:''另见: [[Vim]]'' | :''另见: [[Special:MyLanguage/Vim|Vim]]'' | ||
[https://neovim.io/ Neovim]<ref>Neovim 团队, "Home - Neovim", Neovim 官方网站, 最后更新日期:2025年3月;访问日期:2025年6月。 https://neovim.io/</ref> 是一款高度可扩展的开源文本编辑器,旨在改进和现代化流行的 [[Special:MyLanguage/Vim|Vim]]<ref>NixOS 维基社区, "Vim", NixOS 维基, 最后编辑于 2025 年 2 月 24 日,访问于 2025 年 6 月。 https://wiki.nixos.org/wiki/Vim</ref> 编辑器。它被设计为 Vim 的无缝衔接替代品,在保持与大多数 Vim 插件和配置的兼容性的同时,提供额外的功能和改进。Neovim 注重可扩展性、易用性和性能。 | |||
[https://neovim.io/ Neovim]<ref>Neovim | |||
它引入了强大的插件架构,支持异步插件执行,这可以显著提升某些操作的性能。它还内置了终端模拟器,允许用户直接在编辑器中运行 shell 命令。该项目注重代码质量和可维护性,拥有简洁且文档完善的代码库,方便开发者贡献代码。 | 它引入了强大的插件架构,支持异步插件执行,这可以显著提升某些操作的性能。它还内置了终端模拟器,允许用户直接在编辑器中运行 shell 命令。该项目注重代码质量和可维护性,拥有简洁且文档完善的代码库,方便开发者贡献代码。 | ||
| Line 31: | Line 29: | ||
==== Shell ==== | ==== Shell ==== | ||
要在不修改系统配置的情况下临时在 shell 环境中使用 Neovim,您可以运行: | |||
{{code|lang=bash|line=no|1=$ nix-shell -p neovim}} | {{code|lang=bash|line=no|1=$ nix-shell -p neovim}} | ||
这样就能在当前 shell 中使用 Neovim 编辑器了。之后,您可以通过输入 <code>nvim</code> 来启动 Neovim。 | |||
<span id="System_setup"></span> | <span id="System_setup"></span> | ||
==== 系统设置 ==== | ==== 系统设置 ==== | ||
要在系统范围内安装 Neovim,使其可供所有用户使用,请将以下内容添加到您的配置中: | |||
{{code|lang=nix|line=no|1= | {{code|lang=nix|line=no|1=# /etc/nixos/configuration.nix 示例 | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
pkgs.neovim | pkgs.neovim | ||
]; | ]; | ||
# 单用户安装(位于 ~/.config/nixpkgs/home.nix) | |||
home.packages = [ | home.packages = [ | ||
pkgs.neovim | pkgs.neovim | ||
];}} | ];}} | ||
使用 <code>nixos-rebuild switch</code> 或 <code>home-manager switch</code> 重建系统后,Neovim 将被安装且可使用。 | |||
<span id="Configuration"></span> | <span id="Configuration"></span> | ||
| Line 74: | Line 64: | ||
}; | }; | ||
# 单用户配置 | |||
# | |||
programs.neovim = { | programs.neovim = { | ||
enable = true; | enable = true; | ||
| Line 109: | Line 97: | ||
}; | }; | ||
# 单用户配置 | |||
# | # 您需要添加以下代码行,将其设置为默认编辑器: | ||
# | |||
programs.neovim.defaultEditor = true;}} | programs.neovim.defaultEditor = true;}} | ||
| Line 118: | Line 104: | ||
{{expand}} | {{expand}} | ||
< | <span id="Package_Variations"></span> | ||
==== | ==== 包的变体 ==== | ||
请查看 [https://github.com/nix-community/neovim-nightly-overlay Neovim Nightly Overlay]<ref>Nix 社区, "neovim-nightly-overlay", GitHub, 最后更新于 2025 年 6 月,访问于 2025 年 6 月。https://github.com/nix-community/neovim-nightly-overlay</ref> 以安装最新的 Neovim nightly 版本。 | |||
您可以通过以下命令运行主版本: | |||
{{code|lang=bash|line=no|1=$ nix run "github:nix-community/neovim-nightly-overlay"}} | {{code|lang=bash|line=no|1=$ nix run "github:nix-community/neovim-nightly-overlay"}} | ||
| Line 136: | Line 117: | ||
{{code|lang=nix|line=no|1=plugins = [ | {{code|lang=nix|line=no|1=plugins = [ | ||
# 示例插件: nvim-tree-lua | |||
# | |||
pkgs.vimPlugins.nvim-tree-lua | pkgs.vimPlugins.nvim-tree-lua | ||
# 示例插件: 配置后的vim-startify | |||
# | |||
{ | { | ||
plugin = pkgs.vimPlugins.vim-startify; | plugin = pkgs.vimPlugins.vim-startify; | ||
| Line 149: | Line 126: | ||
} | } | ||
# 示例插件: 带 Lua 配置的 nvim-colorizer-lua | |||
# | # 由于 Lua 模块运行时路径的处理方式,您的配置可能需要 | ||
# | # packadd! plugin-name 以引入模块. 一个 home-manager 示例如下: | ||
# packadd! plugin-name | |||
{ | { | ||
plugin = pkgs.vimPlugins.nvim-colorizer-lua; | plugin = pkgs.vimPlugins.nvim-colorizer-lua; | ||
| Line 160: | Line 135: | ||
lua << END | lua << END | ||
require 'colorizer'.setup { | require 'colorizer'.setup { | ||
'*'; | '*'; -- 高亮所有类型文件,但可自定义一些类型。 | ||
'!vim'; | '!vim'; -- 排除 vim 类型文件高亮. | ||
} | } | ||
END | END | ||
| Line 167: | Line 142: | ||
} | } | ||
# 示例插件: 带 Lua 配置的 nvim-treesitter | |||
# | |||
{ | { | ||
plugin = pkgs.vimPlugins.nvim-treesitter; | plugin = pkgs.vimPlugins.nvim-treesitter; | ||
| Line 177: | Line 150: | ||
require'nvim-treesitter.configs'.setup { | require'nvim-treesitter.configs'.setup { | ||
highlight = { | highlight = { | ||
enable = true, | enable = true, -- false 将禁用整个插件 | ||
disable = {}, | disable = {}, -- 被禁用的语言列表 | ||
}, | }, | ||
incremental_selection = { | incremental_selection = { | ||
| Line 206: | Line 179: | ||
} | } | ||
# 为 tree-sitter 安装语法 | |||
# | # 选项 1:安装所有语法包 | ||
# | |||
pkgs.vimPlugins.nvim-treesitter.withAllGrammars | pkgs.vimPlugins.nvim-treesitter.withAllGrammars | ||
# | # 选项 2:安装特定语法包 | ||
# (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ])) | # (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [ p.c p.java ])) | ||
# 选项 3:不使用 Nix 安装语法 | |||
# | # 通过内置命令安装语法包可能会导致错误。 | ||
# 以下 Neovim 命令将为 C 编程语言安装语法高亮::TSInstall c | |||
];}} | ];}} | ||
| Line 225: | Line 194: | ||
==== 框架 ==== | ==== 框架 ==== | ||
如果您不想手动配置系统,NixOS 提供了多种预定义配置和社区支持的选项。以下列举其中一些: | |||
* [https://www.lazyvim.org/ LazyVim]<ref>LazyVim 团队, "入门教程", LazyVim 官方网站, © 2025, 访问于 2025年6月。 https://www.lazyvim.org/</ref> | |||
* [https://www.lazyvim.org/ LazyVim]<ref>LazyVim | * [https://astronvim.com/ AstroNvim]<ref>AstroNvim 团队, "AstroNvim", AstroNvim 官方网站, N/A, 访问于 2025年6月。 https://astronvim.com/</ref> | ||
* [https://astronvim.com/ AstroNvim]<ref>AstroNvim | * [https://nvchad.com/ NVChad]<ref>Siduck, "NvChad", NvChad 官方网站, © 2025, 访问于 2025年6月。 https://nvchad.com/</ref> | ||
* [https://nvchad.com/ NVChad]<ref>Siduck, "NvChad", NvChad | |||
默认情况下,LazyVim 会阻止加载非 LazyVim 管理的插件。这包括所有通过 Nix 安装的插件。如果您想同时使用 Nix 和 LazyVim 安装插件,请将以下内容添加到您的 LazyVim 配置中: | |||
LazyVim | |||
{{code|lang=lua|line=no|1= | {{code|lang=lua|line=no|1= | ||
| Line 248: | Line 211: | ||
}} | }} | ||
[https://github.com/folke/lazy.nvim/issues/402#issuecomment-2084997594 源码] | |||
[https://github.com/folke/lazy.nvim/issues/402#issuecomment-2084997594 | |||
<span id="FHS_wrapper"></span> | <span id="FHS_wrapper"></span> | ||
==== FHS 包装 ==== | ==== FHS 包装 ==== | ||
您可以创建自定义的 Neovim FHS 包装器 | |||
{{code|lang=nix|line=no|1= | {{code|lang=nix|line=no|1= | ||
| Line 276: | Line 235: | ||
<!--T:FHS_WRAPPER_SOURCE--> | <!--T:FHS_WRAPPER_SOURCE--> | ||
该 FHS 封装示例基于 nixpkgs 中的一个贡献代码<ref name="nixpkgs-pr-334032">NixOS,“功能:自定义 Neovim FHS 封装”(Pull Request #334032),GitHub,2025 年,访问于 2025 年 6 月。https://github.com/NixOS/nixpkgs/pull/334032</ref>。 | |||
有关包含使用类似 FHS 环境设置 <code>mason.nvim</code> 的扩展配置,请参阅此 [https://github.com/NixOS/nixpkgs/issues/281219#issuecomment-2284713258 NixOS/nixpkgs 问题评论]。 | |||
== 故障排除 == | == 故障排除 == | ||
| Line 287: | Line 244: | ||
==== lua-language-server: 动态链接可执行文件错误 ==== | ==== lua-language-server: 动态链接可执行文件错误 ==== | ||
在您的<code>~/.local/state/nvim/lsp.log</code>文件中,您会看到以下错误: | |||
{{code|lang=text|line=no|1=[ERROR][2025-06-07 23:13:15] ...p/_transport.lua:36 "rpc" "lua-language-server" "stderr" "Could not start dynamically linked executable: /home/incogshift/.local/share/nvim/mason/packages/lua-language-server/libexec/bin/lua-language-server\nNixOS cannot run dynamically linked executables intended for generic\nlinux environments out of the box. For more information, see:\nhttps://nix.dev/permalink/stub-ld\n"}} | {{code|lang=text|line=no|1=[ERROR][2025-06-07 23:13:15] ...p/_transport.lua:36 "rpc" "lua-language-server" "stderr" "Could not start dynamically linked executable: /home/incogshift/.local/share/nvim/mason/packages/lua-language-server/libexec/bin/lua-language-server\nNixOS cannot run dynamically linked executables intended for generic\nlinux environments out of the box. For more information, see:\nhttps://nix.dev/permalink/stub-ld\n"}} | ||
<!--T:LUA_LS_SO_REF--> | <!--T:LUA_LS_SO_REF--> | ||
这个问题可以在 Stack Overflow 上找到解决方案<ref name="so-lua-ls-dynlink">Stack Overflow 贡献者,“对‘无法在 NixOS 上启动动态链接可执行文件...’的解答”,Stack Overflow,2025,访问于 2025 年 6 月。https://stackoverflow.com/a/78215911/27134695</ref>。 | |||
<span id="See_also"></span> | <span id="See_also"></span> | ||
| Line 312: | Line 265: | ||
== 参考 == | == 参考 == | ||
[[Category:Applications | [[Category:Applications]] | ||
[[Category:CLI Applications | [[Category:CLI Applications]] | ||
[[Category:Text Editor | [[Category:Text Editor]] | ||