当前位置: 首页 > 后端技术 > Python

保姆级教程!将Vim打造成IDE(Python)

时间:2023-03-25 21:34:50 Python

从上周开始折腾,做了一个VimIDEforPython&Go。我会把整个搭建过程整理成一篇文章来分享。本文为Python版本。保姆级教程,其实我也写过Go版的。如果你想阅读它,你可以喜欢这篇文章。说到IDE我会在下一篇文章里贴出来。总会有人认为世界上最好的编辑工具是哪一个。好吵,不过本文不涉及,不想误导大家。相信不同的人,不同的使用场景,会有不同的最优方案。世界上没有万能的编辑器。如果是在桌面端,PyCharm和VSCode已经够用了,很难有第三个编辑器可以匹敌。但是在服务器端呢?似乎别无选择,Vim几乎是你唯一的选择。Vim是一个非常有生产力的工具,甚至在某些人眼中,它是一个恶魔般的编辑器。之所以这么说,是因为它的进入门槛非常高,学习曲线也非常陡峭。一是它是程序员专有的编译器,你需要学习和理解它的设计理念,需要记住很多复杂的操作指令。第二个是它不是一个开箱即用的工程项目代码编辑器。它需要你安装大量的插件并进行大量的配置才能成为一个得心应手的IDE工具。我之所以使用Vim作为开发工具,有四点原因:直接:在普通的本地IDE中编码后,上传到远程服务器编译测试比较麻烦。直接在SSH服务器上编码对我来说更直接。省心:无需安装多个专有的多语言编辑器,如PyCharm、Goland等,也无需费力破解各种付费软件。方便:提高iPad的工作效率,出门不用电脑也可以在线写代码,省得你每次都带着笨重的电脑。自命不凡:你不觉得很酷吗?(转义...如果你对Vim操作一无所知,请先去了解一下Vim的日常使用,否则下面的内容不适合你。1.准备本文是对Vim中操作的演示Mac环境,但它也适用于Linux环境(一些不同之处,我会在相应的地方指出),如果你只有Windows系统,你可以使用GVim。在开始安装配置之前,先说一下本文的整体思路:准备运行环境:安装Python或Go环境准备Vim版本:使用最高版本的Vim8.2插件安装环境:Plug-插件都在Github等外网,需要配置部分代理插件安装:一键批量安装插件插件配置:插件安装完成后,需要进行一些配置让它们易于使用当你安装Vim8.2版本时,会自动安装Python,但安装的版本不是你需要的版本,不过没关系,可以配置Vim使用的Python版本。我这里使用的版本是Python3.10.0$python3--versionPython3.10.03。安装/升级Vim8.2一般的Mac或Linux机器都会有自己的Vim工具,但版本可能比较低。如果你使用这些版本的Vim,一些插件会安装不上或者后面会用不到,比如YouCompleteMe,一个很重要的插件,如果你不使用Vim8.1+,每次使用vim都会提示,会大大影响体验$vimmain.goYouCompleteMeunavailable:requiresVim8.1.2269+.PressENTERortypecommandtocontinue这些插件已经持续更新多年,老版本的Vim不再提供可以理解支持。如果你使用的是Linux,整个过程会顺畅很多,这里我使用的是CentOS7.6Linux。先找出系统安装了哪些vim包,然后用yumremove卸载[root@iswbm~]#yumlistinstalled|grep-ivimvim-common.x86_642:7.4.629-8.el7_9@updatesvim-enhanced.x86_642:7.4.629-8.el7_9@updatesvim-filesystem.x86_642:7.4.629-8.el7_9@updatesvim-minimal.x86_642:7.4.629-8.el7_9@updates[root@iswbm~]#[root@iswbm~]#yumremovevim-commonvim-enhancedvim-filesystemvim-minimal后面会用源码编译的方法安装Vim8.2,但是编译需要安装以下基本依赖[root@iswbm~]#yuminstall-ygccmakencursesncurses-devel[root@iswbm~]#yuminstallctagsgittcl-devel\rubyruby-devel\lualua-devel\luajitluajit-devel\pythonpython-devel\perlperl-devel\perl-ExtUtils-ParseXS\perl-ExtUtils-XSpp\perl-ExtUtils-CBuilder\perl-ExtUtils-Embed下载源码代码来自Githubgitclonehttps://github.com/vim/vim.git进入vim/src目录,执行如下三个命令编译安装[root@iswbm~]#./con图--prefix=/usr/local/vim\--enable-pythoninterp=yes\--enable-python3interp=yes\--with-python-command=python\--with-python3-command=python3[root@iswbm~]#make&&makeinstall[root@iswbm~]#如果不出意外,命令执行后,只需要配置一个软件链接,就可以正常使用8.2版本的Vim[root@iswbm~]#ln-s/usr/local/vim/bin/vim/usr/bin/vim[root@iswbmsrc]#vim--version|head-n1VIM-ViIMproved8.2(2019年12月12日,2021年10月19日22:05:46编译)4。插件安装Vim本身改进的功能已经很强大了,但是上手太难了。安装一些定制的插件可以让整个Vim界面的管理和使用更符合人的直觉,降低使用门槛。你需要安装什么插件,你想让Vim变成什么样子?这个你不用担心,在桌面上对着IDE软件复制作业就OK了。个人而言,我每天在IDE中使用最多的功能是:代码自动补全、代码跟踪、跳转、静态代码检查、运行调试代码、全局搜索代码、项目代码书签、代码版本管理、代码高亮、项目文件树,单文件代码结构树可以同时打开多个Markdown文件并实时预览。那我就用这个函数来找对应的插件。中括号,和花括号NERDTree:提供工程项目的文件树,支持书签功能vim-nerdtree-tabs:可以打开多个代码文件,使nerdtreetabs更友好nerdtree-git-plugin:在导航目录下可以看到tothegitversioninformationtagbar:一个插件,可以查看当前代码文件中的变量和函数列表,并切换跳转到代码中对应变量和函数的位置vim-airline:Vim状态栏插件-in,包括显示行号和列号、文件类型、文件名、Git状态vim-gitgutter:可以显示文档中的git信息vim-one:codecolorschememarkdown-preview.vim:支持Markdown预览mathjax-support-for-mkdp:Markdown数学公式预览支持vim-godef:go中的代码跟踪,输入gd自动跳转到fath/vim-go:静态检查等go相关的一系列工具ultisnips/vim-snippets:自动生成密码cks那么如何安装这些插件呢?很简单,你只需要在你的~/.vimrc文件中使用vi,将下面的配置粘贴到文件末尾"插件开始的位置调用plug#begin('~/.vim/plugged')》代码自动补全,Plug'ycm-core/YouCompleteMe'用于提供导航目录侧边栏Plug'scrooloose/nerdtree''可以让nerdtree的tab更加友好Plug'jistr/vim-nerdtree-tabs'》可以在导航目录中看到git版本信息插件'Xuyuanp/nerdtree-git-plugin''是一个查看当前代码文件中变量和函数列表的插件'可以切换跳转去代码中对应变量和函数的位置》大纲导航,Go需要https://github.com/jstemmer/gotags支持Plug'preservim/tagbar'》自动补全括号的插件,包括括号,中括号,和花括号Plug'jiangmiao/auto-pairs'"Vim状态栏插件,包括显示行号、列号、文件类型、文件名和Git状态Plug'vim-airline/vim-airline'"简写;获取https://github.com/junegunn/vim-easy-align"Plug'junegunn/vim-easy-align'"Plug'airblade/vim-gitgutter'"Plug'airblade/vim-gitgutter'"Plug'iamcco/mathjax-support-for-mkdp'Plug'iamcco/markdown-preview.vim'"下面两个插件要一起使用才能自动生成代码块Plug'SirVer/ultisnips'Plug'honza/vim-snippets'"去主要插件Plug'fatih/vim-go',{'tag':'*'}"go中代码跟踪,输入gd自动跳转Plug'dgryski/vim-godef'"可以在vim中使用tab完成"Plug'vim-scripts/SuperTab'”可以在vim中自动补全“Plug'Shougo/neocomplete.vim'”插件结束的位置,把所有的插件都放在这一行调用plug#end()并输入command:wq保存退出vi安装插件的管理工具有很多,比如Vundle、vim-plug等,Vundle是非常著名的历史悠久的Vim插件管理工具。但是随着安装的vim插件越来越多,使用Vundle管理这些插件时,效率越来越低,vim启动耗时也越来越长。而vim-plug是一款非常轻量高效的vim插件管理工具。支持全异步、多线程并行安装插件,支持git分支、标签等,可以回滚和更新插件,还支持按需加载插件(On-demandloading),并且可以指定为特定的文件类型加载相应的vim插件。大大加快了vim的启动时间。所以我这里会使用vim-plug管理工具。可以通过以下命令安装vim-plug插件管理工具curl-fLo~/.vim/autoload/plug.vim--create-dirs\https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim然后请重启你的终端,确保重新初始化,否则后面执行PlugInstall时,可能会报命令不存在。不是编辑器命令:PlugInstall重启终端后,输入再次打开vim,输入:PlugInstall开始安装过程。如果你没有网络问题(这不是科学的东西),那么安装就会很顺利。.输入:PlugStatus可以看到所有的插件都安装好了。5.YouCompleteMe上的插件安装其实比较简单,就是把Github上的仓库拉到本地~/.有复杂的依赖关系,但只有一个插件比较特殊,它就是号称最难安装的Vim插件YouCompleteMe。我花了两个晚上在我本地的Mac机器上安装,才解决了所有依赖项,但在Linux上却很顺利。具体安装步骤是进入~/.vim/plugged/YouCompleteMe插件目录,将.gitmodules中的github.com修改为镜像网站hub.fastgit.org,然后安装一级依赖:gitsubmoduleupdate--init一级依赖安装正确后修改third_party/ycmd目录下所有依赖.gitmodules中的github.com为镜像网站hub.fastgit.org并递归安装其依赖包:gitsubmoduleupdate--init--recursive最后执行python3install.py--all,--all会安装插件支持的所有语言特性。在Mac上安装的过程中,遇到了很多问题,还涉及修改YouComplete的代码,最后终于可以正常安装了。您在安装过程中也可能会遇到类似的问题。有什么问题欢迎在评论区留言,我会尽力解答。6.在镜像代理上安装插件的过程其实会去Github下载对应的插件,但是由于各种莫名其妙的原因,访问大陆服务器的github非常慢,甚至无法访问。我没有做任何网络设置,但是20个插件都没有安装成功。所以在这里,你得先想办法,让你的服务器能够正常访问Github。至于怎么做,我这里也不好多说一些黑科技,所以给大家介绍一个公开的,非常有效的方法。修改~/.vim/autoload/plug.vim,将letfmt=get(g:,'plug_url_format','https://git::@github.com/%s.git')改为letfmt=get(g:,'plug_url_format','https://git::@hub.fastgit.org/%s.git')把这一行\'^https://git::@github\.com','https://github.com','')进入\'^https://git::@hub.fastgit\.org','https://hub.fastgit.org','')然后进入Vim执行:PlugInstall就可以了7.插件使用大部分插件安装完成后,可以立即使用,但有些插件需要进行配置,使用起来更方便。由于配置太多,这里就不直接贴出来了。有兴趣的加我v:hello-wbm,向我要配置表。YouComplete使用IDE最基本的要求是能够在你写代码的时候自动给出提示,然后自动补全。在YouComplete的加持下,vim也可以在桌面上100%还原编码体验。NERDTree打开文件后,使用F9或者输入NERDTreeToggle在侧边栏打开文件树,这是NERDTree提供的便利。tagbar打开Python文件后,使用F9或输入:tagbar打开tagbar窗口。在这个窗口中,可以看到文件的所有结构体、函数、变量等。这些都可以称为标签。当你定位到某个标签时,直接回车就可以跳转到左边代码窗口的位置。vimgrepVimgrep可用于工程项目的代码搜索。对于经常阅读源代码的同学来说是不可或缺的工具。它是Vim自带的一个工具,非常强大。使用vimgrep搜索后,一般情况下是不会有任何反馈的。如果需要查看搜索结果并跳转到相应位置,可以使用QuickFix,输入:cw或:copen8即可。使用Vim运行代码编写完代码后,如果想像PyCharm一样直接使用快捷键运行代码,需要在.vimrc中写入如下配置。此配置不仅包括Python,还包括Bash和Golang"F5运行sh/python3map:callCompileRunGcc()func!CompileRunGcc()exec"w"if&filetype=='sh':!timebash%elseif&filetype=='python'exec"!timepython3%"elseif&filetype=='go'exec"!timegorun%"配置endifendfunc后,直接使用F5运行当前脚本。9.在iPad上写代码就可以了如果你和我一样有自己的服务器,那么你按照上面的步骤配置好Vim后,你就可以在iPad上通过SSH连接服务器写代码了,如果你没有服务器,加我v就好了:你好-wbm,我送你一年的阿里云服务器,名额有限,只能说先到先得。我手里刚好有一台2020iPadPro,平时用着视频的话,真的对不起Pro的配置。有了Vim这个神器,生产力又提高了一点点。包括服务器在内的几台电脑都装了VimIDE。不同耳鼻喉科机器有不同的问题。其中,我的Mac上,问题最多,折腾时间最长。其中一些,我谷歌找不到答案。最后看了代码,修改了一些代码才运行。另外,对于Vim来说,最重要的就是.vimrc文件。我可能在上面的解释中漏掉了一些配置解释。如果你发现使用不太顺畅,可以下载我的.vimrc文件:https://wwe.lanzoui.c??om/i9gD5...本文是Python版的VimIDE搭建指南,代码演示基本都是使用Python代码,按照文中的思路一步步操作,就可以搭建自己的一套在线IDE环境。我不仅会写Python代码,还会写一些Go代码。Vim为Python提供了更多的原生支持。相比之下,Go需要安装更多的插件才能获得良好的编码体验。但是,由于他们中的大多数是Python开发人员。对于这部分,我将写另一篇关于VimforGo的文章。有兴趣的朋友可以在评论区告诉我,我把地址发给你。好了,以上就是本文的全部内容。如果大家对安装配置有什么疑问,欢迎在评论区指出~原创文章首发于我的个人博客:https://iswbm.com/591.html文末附上一段bonusisinserted双十一马上就要到了,阿里云也开始组织活动了。正好可以给大家介绍一下阿里云的服务器。说白了就是每个人不用花一分钱就可以搞到一台服务器,规格是2c2m(2vcpu2G内存)的机器。昨天发到朋友圈了,现在已经有400人报名参加了。今天通过这篇文章再说一遍。想参与的可以加我v(hello-wbm),把大家一起拉过来。在SegmentFault上写了很多Python相关的文章,包括Python实用工具、Python高效技巧、PyCharm使用技巧等。很高兴能得到众多知乎朋友的认可和支持。在他们的鼓励下,我将以往的文章整理成三本PDF电子书《PyCharm中文指南》《PyCharm 中文指南》使用300多张GIF动图,详细讲解了最适合实际开发的PyCharm105个高效使用技巧,内容通俗易懂,适合所有Python开发者。在线体验地址:https://pycharm.iswbm.comPython黑魔法指南《Python黑魔法指南》目前迎来v3.0版本,收集了100多个开发技巧,非常适合闲暇时碎片化阅读。在线体验地址:https://magic.iswbm.comPython中文指南学习Python最好的学习资料永远是Python官方文档。不幸的是,大多数官方文件现在都是英文的。虽然有中文翻译,但进度着实堪忧。为了照顾英语不好的同学,我为零基础的朋友写了一个Python在线文档——《Python中文指南》在线体验地址:https://python.iswbm.com如果有帮助记得点个赞给个赞哟~