这是一篇关于 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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。