中山市城乡住房建设局网站,什么网站做一手房好,公司宣传推广方案,网站建设行业的前景分析一只小狐狸带你解锁炼丹术NLP秘籍我相信#xff0c;有很多小伙伴在看到这篇文章时就有了很多问号#xff1a;用vim#xff1f;疯了吧#xff1f;sublime不香吗#xff1f;pycharm不香吗#xff1f;jupyter notebook不香吗#xff1f;我这可是最新版的windows 100操… 一只小狐狸带你解锁炼丹术NLP秘籍我相信有很多小伙伴在看到这篇文章时就有了很多问号用vim疯了吧sublime不香吗pycharm不香吗jupyter notebook不香吗我这可是最新版的windows 100操作系统诶你要劝我回到Dos/*nix年代没错小鹿要硬着头皮劝了╮(▽)╭其实对于做app开发、web开发等其他IT从业者来说用vim的意义确实更多是出于情怀了。但是对于算法工程师尤其是NLPer来说vim简直堪称效率神器呀用熟之后。想象一下用熟vim之后搬过来一个GPU服务器你就直接ssh上去啪代码了也不用折腾什么本地端与server端的通信和代码同步问题了。不管是写代码、看代码还是刷log都可以一条命令搞定而且最重要的是vim超级轻量级只要你手速够快秒开秒关不再是高端笔记本的专属再也不用盯IDE启动时的进度条了。怎么像是在给vim写软文给点钱叭。。。遥想小鹿第一次接触vim的时候看着黝黑的界面上唯一一个闪烁的白色光标内心OS也是黑漆漆的什么鬼太不符合我的审美了叭我要IDE我要鼠标慢慢熟悉之后发现可爱预警与CSDN的文风不同本文不是一个vim命令大集合其实在文末(//∇//)\基本是想到哪写到哪所以请大家当做段子看就好。vim的技巧超多还有一些提高vim日常操作效率的配置技巧写不动了QAQ直接将自己的配置文件丢出来吧在公众号「夕小瑶的卖萌屋」回复口令【vim】即可领取噢。看仅仅是“打开看一下”这个动作vim就有非常非常多的玩法可以让你非常方便的处理各种狗血的文件优雅的移动很多初学者在光标移动、翻页问题上就被vim劝退了。对于比较保守的小伙伴可能打开vim的第一件事就是按一个i进入插入模式然后就开始上下左右移动光标了╮(▽)╭要完成移动确实有很多命令但其实完全没必要都去记住仅仅留几个常用的就好。例如对于如下一个文件如果想要在行内移动光标怎么办呢初学者可能就按住→这个箭头慢慢挪了╮(▽)╭这种是字符级的移动速度非常慢。此时完全可以用w和b来前后移动分别表示向前或向后移动一个单词。词级别的移动就快多啦另外如果你的目标恰好是在这一行的末尾附近那么你完全可以用$shift4来直接跳转到行末。想再次跳回行首则可以通过^shift6完成。注^代表开始$代表结束其实是个非常通用的表示在正则表达式中也是如此如果要跨行移动呢这时候要分两种情况讨论一种是不需要翻页同一个屏幕内这时候可以一直按着↑或者↓来移动划掉还可以 数字方向键 来一次性跳多行例如 5↓就代表往下移动5行另一种就是不仅要跨行而且目标没有出现在当前视野范围内需要翻页那么就可以用ctrlf和ctrlb来往前或往后翻。跨屏幕移动跟行内移动一样也会面临移动到头部和尾部的问题。若希望直接移动到文件结尾则可以用G(shiftG)直接跳转到文件最末行gg回到文件第一行。还可以通过N % 跳转到文件的N%处比如50 %直接跳转到文件中间位置。此外还有定向移动也就是查找啦~/text直接查找跳转到text位置如果text在文件中多次出现可以用n/N向下/上跳转。vim的查找模式还支持正则表达式。举个例子/^$可以查找空白行文首^和文尾$中间为空/^I^I(/TabTab)查找制表符分隔的数据是否存在空值。奇怪的文件格式与编码tsv制表符分隔文件算是nlper最常遇到的数据集格式了由于vim界面很简单所以不会有很清晰的分隔这时候可以用:set list显示制表符和行尾最后:set nolist取消。当我们查看一些中文数据集时有可能出现乱码的情况。这其实是一个GB18030编码的中文文件:set fileencoding查看当前文件编码。如上图红框所示当vim无法识别文档的编码的时候会使用latin-1去读取。这时候可以通过:e encgb18030强行使用GB18030编码重新打开文件。上面的命令都只是临时修改文件编码大家也可以根据自己的经常使用的文件编码在~/.vimrc文件中修改fileencoding配置。愉快地编辑在谈论怎么愉快地编辑之前先说一下怎么优雅的进入编辑模式。vim可以通过很多字母进入编辑模式比如a、Ai、I,o、O等不同的字母进入插入模式时光标的位置不同。按照小鹿的使用频次排序如下i在光标原有位置进入编辑模式o在光标所在处另起一行进入编辑模式A在光标所在行行末处进入编辑模式I在光标所在行行首处进入编辑模式a在光标右边开始插入这个一般与光标移动命令搭配使用O在光标所在处往上另起一行进入编辑模式这个模式一般用于文首插入空白行感到懵逼的小伙伴请找个文件自行体会【手动狗头】进入编辑模式后就可以像之前一样随意玩耍了。不过其实插入模式下也是可以使用一些“命令”的只不过这些可能是系统级的了。比如ctrlw可以删掉一个单词shift左右可以左右移动一个单词mac原生的terminal支持较好。多掌握一些类似的tricks可以大大减少模式切换的频率提高生产力。命令模式下的简单编辑对于一些简单的编辑操作其实无需进入编辑模式也能完成。例如在命令模式下x可以完成剪切当删除来用也没大毛病v模式下选中文本后通过d可以删掉这些选中的文本dd删除一行数字dd删除若干行:n,md删除第n到第m行等等。除了通过x进行剪切也可以通过v模式y或yy复制然后通过p进行粘贴。这些操作都非常常规了网上资料很多就不赘述啦。这里其实容易面临一个令人头疼的问题就是无论通过d还是x删掉的内容都会默认进入剪贴板这就会导致边删边贴变得很麻烦。一个解决方案是使用“黑洞”来将d命令改造成真正的删除。nnoremap d _d
这时候如果希望像之前使用dd一样剪切整行就可以通过Vxshiftv可以直接选中整行来完成整行的剪切啦。不过还是需要一两天的适应期的。批量编辑“替换”是啪代码的超高频的操作也可以用来编辑小型数据集文件和日志文件。Tips: 先高亮查找大体扫一遍后再执行替换可以大大降低造bug的概率是时候祭出这张图了命令模式下输入上面????的命令即可在全文范围将所有old替换成new。对于作用范围常用的表达有%s #全文范围
s #光标所在行
n, ms #从第n行到第m行
., $s #光标所在行到文末还没忘记$表示最末叭
同search一样旧模式的匹配也同样支持正则表达式最后的g表示作用到范围中的所有匹配没有g表示仅作用到所属范围每一行的首个匹配。结合^/$可以使用查找替换命令在多行的行首或者行末添加内容。比如8,16s/^/#实现对8到16行添加注释:此外前面也多次提到的v模式可视模式Visual Mode跟插入模式的组合技也是一个批量编辑的神器。v模式i模式的组合技最常见的操作就是批量注释啦。ctrlv进入垂直v模式移动光标选中需要注释的行之后进入插入模式添加注释后两次Esc即可完成批量注释。这个操作不仅可以拿来注释更是编辑数据集的神器比如批量添加伪标签列也是编辑调参bash文件的神器等。相关的进阶玩法下一篇再讲多文件操作vimdiff在快速开发迭代实验想法的时候一个代码可能会衍生出n个版本主干部分可能都差不多唯一不同的是需要实验验证的一小部分此处强烈推荐使用git实现版本管理维护实验环境安全可回溯????。而vimdiff file1 file2则可以快速帮助定位两个文件的异同查看不同版本代码的差异~效果如下分屏当我们阅读或者开发一个层级比较深的项目代码的时候分屏打开多个文件可以大大提高效率减少我们的记忆负担有什么忘记了看一下右边的window就好????虽然vim支持分屏打开多个文件横屏/竖屏/纵横交错皆可但是小夕一般喜欢竖屏打开2-3个文件就好。分屏太多会加剧操作的复杂度增加失误的可能性以竖屏打开两个文件为例如果事前就确定要打开的文件可以vim -O file1 file2直接打开显示类似vimdiff的效果。如果是已经用vim打开了file1后需要分屏打开一个新文件可以:vs file2vs指vertical split。实现分屏后之前介绍的所有命令都可以直接作用在光标所在的window。所以对于vim的分屏使用我们只需要再掌握各window之间如何跳转就好~ctrl w ←(h)/↑(j)/↓(k)/→(l)可以精确控制跳转的方向但是当分屏数不太多的时候也可以精简成一个命令ctrl w w跳转到下一个window就好~看到这里其实就可以使用组合技实现大多数分屏操作了。我们来举个栗子如何利用分屏实现跨文件的复制粘贴假如分屏是这个样子的然后需要把右边文件中的2-15行复制到左边的文件中。那么ctrl w w光标跳转到右边13yy复制多行出现红框的提示再ctrl w w光标跳转到左边挪动到需要复制的位置,p复制即可~最后的效果如下。如果file2的作用已经完成那么ctrl w c关掉该窗口就可以功成身退了~还有一些提高vim日常操作效率的配置技巧写不动了QAQ直接将自己的配置文件丢出来吧在公众号「夕小瑶的卖萌屋」回复口令【vim】即可领取~总结本文谨分享了一些小鹿日常常用的vim命令整理如下~更多命令可以:help查看官方使用文档ctrl f 往后forward翻一页N % 跳转到文件的N%处比如50 %直接跳转到文件中间位置Gshif g 切换到文件最末尾:set list 标识出制表符和行尾:set nolist 取消标识/text 查找textn向下跳转N向上跳转/^$查找空行/^I^I(/TabTab) 查找空值sort 排序u撤回最近修改i在光标原有位置进入编辑模式I在光标所在行行首处进入编辑模式A在光标所在行行末处进入编辑模式o在光标所在处另起一行进入编辑模式w/W 按符号划分word跳转W步子更大些%s/old/new/g 全文将old替换成new:n,md删除第n到第m行n, m co x将第n行到第m行复制到第x行n yy从光标所在行起复制n行移动光标到需要粘贴的位置p实现复制:n,ms/^/#从第n行到第m行添加注释ctril v进入可视模式 (Visual-mode)选中要编辑的行i切换到编辑模式输入#然后Esc键从可视模式推出到正常模式实现批量注释vimdiff file1 file2快速帮助定位两个文件的异同vim -O file1 file2垂直分屏打开两个文件:vs file2垂直分屏打开一个新文件ctrl w ←(h)/↑(j)/↓(k)/→(l)分屏时按不同方向跳转windowctrl w w分屏时跳转到下一个windowctrl w c关掉窗口夕小瑶的卖萌屋_关注星标小夕带你解锁AI秘籍订阅号主页下方「撩一下」有惊喜哦