这是一篇关于 Neovim 工作流程的博客文章,主要介绍了如何优化 Neovim 以提高开发效率,包含多个方面的内容:
- 动机:作者因电脑无法同时运行 Visual Studio Code 和 Windows 而开始使用 Vim,历经多年不断优化自己的 Neovim 配置,希望能激励读者打造个性化开发环境。同时介绍了使用的工具如 lua、lazy.nvim 等,并提供了SeniorMars’ Dotfiles。
改善 (Neo)Vim 体验:
- 搜索和替换:通过设置
vim.opt.ignorecase、vim.opt.smartcase和vim.opt.inccommand实现大小写敏感和实时预览搜索结果,介绍了相关快捷键如<leader>sr、*等,还提到了使用rg的插件mhinz/vim-grepper和smjonas/live-command.nvim实现类似:norm的命令。 - Ex 命令和
g命令:设置vim.opt.wildmode、vim.opt.wildignore和vim.opt.suffixesadd来过滤搜索结果,介绍了插件gelguy/wilder.nvim用于 Ex 命令的模糊查找,提高搜索效率。
- 搜索和替换:通过设置
- 撤销和重做:启用
vim.opt.undofile保存撤销历史,添加快捷键如,、.等增强撤销功能,使用插件mbbill/undotree查看撤销树,结合AutoSession保存项目的窗口、缓冲区和撤销历史。 - 移动:设置
vim.opt.splitbelow和vim.opt.splitright控制窗口分割方向,介绍了各种移动窗口和文本的快捷键,如<space>h、<space>j等,还提到了一些自动命令和插件如tpope/vim-repeat、kylechui/nvim-surround、windwp/nvim-autopairs、wellle/targets.vim等,用于重复命令、包围文本对象、自动配对等。 - 更好的快速修复:使用插件
kevinhwang91/nvim-bqf方便地导航快速修复列表,如<leader>cn和<leader>cp。 - 拼写检查:通过函数
SpellToggle切换拼写检查,使用语言服务器ltex进行拼写检查,快捷键为<leader>5和<leader>z。 - 状态行:自定义状态行显示当前模式、语言、分支名、文件路径、git 状态、单词计数等信息,通过自动命令
BufEnter、BufWritePost和WinResized更新缓存,设置vim.opt.statusline来显示状态行。 - 格式化:使用插件
sbdchd/neoformat进行代码格式化,添加快捷键<leader>3调用FixWhitespace去除尾随空格,还可以使用class =和gq进行格式化。 - 更好的 netrw:设置
vim.g.netrw_banner、vim.g.netrw_browse_split等参数来优化 netrw 文件浏览器的显示和行为,使用gx在浏览器中打开文件。 - Git 集成:使用插件
tpope/vim-fugitive进行 Git 控制,如:<leader>gg打开 Git 界面、:<leader>ga添加文件等,还设置 Neovim 为合并工具和差异工具,使用diffget和diffput进行合并。 充分发挥 Neovim 的功能:
- Tree-sitter:介绍 Tree-sitter 的作用和优势,用于实时编辑上下文的语法高亮、代码折叠、函数参数交换、函数重构等,设置相关插件如
numToStr/Comment.nvim、nvim-treesitter/nvim-treesitter等,并展示了在包含 Rust、Markdown 和 LaTeX 的文件中使用 Tree-sitter 进行语法高亮的效果。 - 更好的终端:使用插件
akinsho/toggleterm.nvim创建持久的、可定制的终端,结合LazyGit实现高效的 Git 操作,设置终端的相关配置如shade_terminals、highlights等。 - Telescope:用于在开发环境中快速查找文件、代码、文档等,设置插件
nvim-telescope/telescope.nvim和telescope-frecency.nvim,自定义预览器new_maker处理大文件的预览,映射各种快捷键如<leader><leader>f、<leader>fl等用于不同的查找操作。 - 补全:使用
coc.nvim进行代码补全,设置相关快捷键如<TAB>、<S-TAB>、<cr>等,结合 quickfix 列表显示诊断信息,还使用zbirenbaum/copilot.lua生成样板代码和测试用例,设置其相关配置如panel、suggestion等。 - LaTeX:使用插件
lervag/vimtex改善 LaTeX 编辑体验,设置vim.g.vimtex_quickfix_mode等参数,结合sioyek自动编译和查看 LaTeX 文档,使用latexindent格式化 LaTeX 文档。
- Tree-sitter:介绍 Tree-sitter 的作用和优势,用于实时编辑上下文的语法高亮、代码折叠、函数参数交换、函数重构等,设置相关插件如
- 结论:作者希望读者能从中学到新东西,打造个性化的 Neovim 配置,提高开发效率,并欢迎读者提问和交流。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。