曾多次向人们推荐Vim,其热情有点类似于现在卖保险。有时候,人们会因为一些珍贵的美好而暗暗向往巨大的负面情绪,比如因为想重温手动档的乐趣而渴望买一辆20万公里的老爷车,比如因为喜欢老爷车而舍不得旧车。所谓完美音质的有线耳机,如因一口铜炉火锅而期待北京漫长寒冷的冬天。也许有些人会因为Vim而放弃169的JetBrains全家桶。是的,Vim的乐趣就是手动变速器的乐趣。明白了,自然就明白了。如果您不了解它,您将永远不会了解它,那么用Vim生活在一个世界里是绝对没有用的。上一篇:上古法宝先天至宝Win11平台安装配置NeoVim0.8.2编辑器搭建Python3开发环境(2023最新攻略)我们已经配置好了Python3开发环境,这次继续添砖加瓦,让NeoVim演变成一个全能的栈编辑器,无所不知,无所不能。全能补全:在coc.nvim之前配置了Python补全,我们使用了NCM2扩展插件:Plug'ncm2/ncm2'Plug'roxma/nvim-yarp'Plug'ncm2/ncm2-bufword'Plug'ncm2/ncm2-path'Plug'ncm2/ncm2-jedi'五个插件,只为Python补全,Coc.nvim通过微软的LanguageServerProtocol支持多种编程语言,包括JavaScript、Python、C++、Ruby等。同时可以通过设置和扩展灵活定制,满足不同用户的需求。重写配置:Plug'neoclide/coc.nvim',{'branch':'release'}安装插件::PlugInstall安装Python完成::CocInstallcoc-pyls就这么简单。稍后,您还可以设置其他目标语言。比如要支持Golang补全,通过命令::CocConfig打开配置文件。Win11默认路径为:~\AppData\Local\nvim\coc-settings.json{"languageserver":{"golang":{"command":"gopls","rootPatterns":["go.mod"],"filetypes":["go"]}},"suggest.noselect":false,"coc.preferences.diagnostic.displayByAle":true,"suggest.floatEnable":true}添加Golang配置,这里使用gopls模块。配置正确后,就可以使用代码补全了。比如我们输入fmt,就会提示fmt包中的方法。默认选择第一个。使用上下选择,回车确认,nvim窗口功能下可以使用hover。同样,如果要配置Ruby的智能提示,不需要配置文件,只需要安装相应的模块:geminstallsolargraph然后在NeoVim中运行命令::CocInstallcoc-solargraph但这也带来了一个问题,就是在编译运行的时候,默认的运行语言是Python,如何让Vim程序自动判断呢?只需修改配置:autocmdFileTypepythonnnoremap:sp:termpython%autocmdFileTypegonnoremap:sp:termgorun%nnoremap:bd!这里是通过NeoVim中的autocmd来判断的。如果它是Python代码,它将由Python解释器运行。如果是golang代码,会被golang编译器编译,互不影响。NeoVim的autocmd是一种自动执行命令的机制。它可以在特定事件发生时触发命令的执行,例如打开文件、保存文件等。这样就可以自动执行格式化文件、添加文件头信息等操作。前端补全比较简单,一键命令安装即可::CocInstallcoc-veturcoc-jsoncoc-htmlcoc-css但是前端页面默认是不关闭和高亮的,所以下面这个插件-in推荐:插件'leafOfTree/vim-matchtag'可以动态高亮关闭前端页面标签:很方便。快捷操作和配置有些人可能会为保存、评论、录音等操作需要输入vim命令而烦恼,其实这不是问题,Vim也可以自动保存:Plug'Pocco81/auto-save.nvim'这样:w的操作可以省略。单行和多行批量注释可以依赖这个插件:Plug'tpope/vim-commentary'这样可以通过组合键gc快速进行注释。编辑操作记录可以依赖这个插件:插件'mhinz/vim-startify'可以在首页动态选择编辑的文件:想像传统IDE一样动态调整字体大小?让s:fontsize=12函数!AdjustFontSize(amount)lets:fontsize=s:fontsize+a:amount:execute"GuiFont!Consolas:h"。s:fontsizeendfunctioninoremappumvisible()?"\":"\"inoremappumvisible()?"\":"\"inoremappumvisible()?"\":"\"inoremappumvisible()?"\":"\"通过tab键选择自动补全代码提示?"在插入模式下,按ctrl+numpad's+增加字体inoremap:callAdjustFontSize(1)ainoremap:callAdjustFontSize(-1)a在Vim中,你甚至可以与ChatGpt接吻:use({'terror/chatgpt.nvim',run='pip3install-rrequirements.txt'})当然用户目录下需要chatgpt的apikey或者token:~/.chatgpt-nvim.json:{"authorization":"",#OptionalAPIkey"session_token":""#你的ChatGPTsessiontoken}由于api-key是收费的,所以这里推荐使用token:访问https://chat.openai.com/chat登录后按F12在应用程序中打开开发者工具标签>选择Cookies,直接复制\_\_Secure-next-auth.session-token的值写入上面的session\_token效果如下:最后,完成整个栈NeoVim配置:callplug#begin('C:\nvim-win64\nvim-win64\share\nvim\plugged')Plug'navarasu/onedark.nvim'Plug'pablopunk/native-sidebar.vim'Plug'Pocco81/auto-save.nvim'Plug'leafOfTree/vim-matchtag'Plug'mhinz/vim-startify'Plug'neoclide/coc.nvim',{'branch':'release'}Plug'tpope/vim-commentary'callplug#end()letg:onedark_config={\'style':'warm',\}colorschemeonedarkletg:native_sidebar_shortcut=''setclipboard^=unnamed,unnamedplus语法打开"语法高亮,参见:helpsyntaxfiletypepluginindenton"文件类型检测,参见:helpfiletypesetnumber"显示行号setpath+=**"改进搜索,参见:helppathsetnoswapfile"禁止使用交换文件setwildmenu"完成菜单设置退格=indent,eol,start"确保正确的退格功能设置undodir=~/.cache/nvim/undo"撤消能力将在退出文件集undofile后持续存在"请参阅:helpundodir和:helpundofilesetincsearch"在键入搜索时查看结果,请参阅:helpincsearchsetsmartindent"在新行上自动缩进,请参阅:helpsmartindentsetic"搜索时忽略大小写setexpandtab"将制表符扩展为空格settabstop=4"将制表符设置为4列setshiftwidth=4"将制表符设置为4columnssetsofttabstop=4"settingtabto4columnssetshowmatch"displaymatchingbracketorparenthesissethlsearchincsearch"highlightallpervioussearchpatternwithincsearchhighlightColorColumnctermbg=9"显示丑陋的明亮的redbaratcolorcolumnnumber"KeybindCtrl+ltoclearsearchnnoremap:nohl:echo"SearchCleared""当检测到python文件类型时,可以使用F5来执行脚本"autocmd文件类型pythonnnoremap::exec'!python'shellescape(expand('%:p'),1)autocmd文件类型pythonnnoremap:sp:termpython%autocmdFileTypegonnoremap:sp:termgorun%nnoremap:bd!lets:fontsize=12function!AdjustFontSize(amount)lets:fontsize=s:fontsize+a:amount:execute"GuiFont!Consolas:h".s:fontsizeendfunctioninoremappumvisible()?"\":"\"inoremappumvisible()?"\":"\"我noremappumvisible()?"\":"\"inoremappumvisible()?"\":"\""在插入模式下,按ctrl+数字键盘+增加字体inoremap:callAdjustFontSize(1)ainoremap:callAdjustFontSize(-1)aonly不到70行的配置,我们就拥有了一个万能的Vim编辑器。结论是满满的计算量,七大插件,无所不知无所不能,还有什么我们要做的只是简单的一行:PlugInstall。因为什么?因为爱,如果是真爱,就算万千风情,遇到看不懂的风情,我也愿意去做,哪怕没有一个人理解它,我必须深思熟虑地去做。