Vim备忘录

经常忘事,写个备忘录。

跳转命令
  • hjkl,左下上右。
  • ^H^L^M,页顶,页底,页中。
  • ^F^B^U^D。前后翻一页,上下翻半页。
  • 0 $,行首行尾。我觉得$还不如end好用…
  • wWeEbB,跳词。大写只跳空白。
  • fFtT,跳至字母。大写反跳。; 重复上次跳字母指令。
  • gg,G,文档首,文档尾。
  • *# g* g#,前后跳相同词,n正跳,N反跳,加g无视大小写。
  • / ? 前后搜索,nN正反跳。
  • [[ ]] [] ][,这个比较特殊,第一个括号表示上下,,][和[]是不同方向代表上下跳闭括号。]]和[[是同方向,代表上下跳开括号,这只能算一种解释,原因未知…
  • % 跳至配对括号。
  • ” 回到上次位置。注意是两个英文单引号。

编辑命令
  • ia ^i ^a,当前光标或后一个位置插入,行首行尾插入。
  • xX,相当于delete和backspace。
  • . 重复上次编辑指令,是一个英文句号。u撤销上次编辑指令。
  • d 删除。dd删行,de删至本词尾,dw删至下一词首。d$ d0删至行尾行首,这当然是$0的作用。D 删除行尾更快的方法。
  • c 剪切。和删除d的区别是工作完成之后自动切换插入模式。
  • r 改写单个字符。R 类似windows下令人深恶痛绝的改写模式。
  • s 替换。其实就是删除一个字符并切换插入模式。
  • oO,当前行下或上插入一空行。
  • y复制,yw复制光标至单词尾,yy或Y复制一行,pP粘贴至光标下或上。
  • J,join的意思,join光标的下一行。
虚拟模式
  • v 进入虚拟模式,也就是模拟鼠标拖动的模式,hjkl控制方向。
  • V 逐行选择的虚拟模式。
  • ^v 跨行修改虚拟模式。比如在每行首插入空格,只要选中每一行,I插入空格即可。
  • gv 选中上次虚拟模式框到的内容

文档配置

  • :set 设置某种模式,一般可以在.vimrc中预先写好。下面的命令皆需要:set 前缀。
  • ft=X ft就是format。
  • autoindent 自动缩进。或者直接手动=g,不过功能十分有限。
  • nu,nonu,是否显示行号。
  • 还有很多,一时间脑塞…
替换

这个可以说非常厉害了。说白了其实是正则表达式厉害…vimregex可以参考这里

简单说一下,:s是替换,格式是这样

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

下面贴个演示文档:

<tbody>
<tr>
<td><a href="../">Parent directory/</a></td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td><a href="Young.Justice.S02E01.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv" title="Young.Justice.S02E01.1080p.W EB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv">Young.Justice.S02E01.1080p.WEB-DL.x265.HEVC.10b..&gt;</a></td>
<td>305.7 MiB</td>
<td>2018-Jun-29 23:49</td>
</tr>


<tr>
<td><a href="Young.Justice.S02E02.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv" title="Young.Justice.S02E02.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv">Young.Justice.S02E02.1080p.WEB-DL.x265.HEVC.10b..&gt;</a></td>
<td>246.7 MiB</td>
<td>2018-Jun-29 23:50</td>
</tr>


<tr>
<td><a href="Young.Justice.S02E03.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv" title="Young.Justice.S02E03.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv">Young.Justice.S02E03.1080p.WEB-DL.x265.HEVC.10b..&gt;</a></td>
<td>334.1 MiB</td>
<td>2018-Jun-29 23:50</td>
</tr>


<tr>
<td><a href="Young.Justice.S02E04.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv" title="Young.Justice.S02E04.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv">Young.Justice.S02E04.1080p.WEB-DL.x265.HEVC.10b..&gt;</a></td>
<td>239.9 MiB</td>
<td>2018-Jun-29 23:50</td>
</tr>



原文件非常长。我只截了一部分。我们要做的就是提取所有下载链接。

  • 首先,%s/全局替换
  • .*href=”匹配href”之前所有的字符。. 表示任何字符,*表示任何数量的前一个字符。
  • \([^”]*\)是扩展正则语法,\(\)内的字符被分组按照数字顺序排号。匹配非”字面值的所有字符。
  • “.*$/,上面匹配到”停止。$是行尾。
  • \1/g,\1就是之前提取的字符。/g全局替换,也就是替换所有行。

合起来就是

:%s/.*href="\([^"]*\)".*$/\1/g

结果

Young.Justice.S02E01.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv
Young.Justice.S02E02.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv
Young.Justice.S02E03.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv
Young.Justice.S02E04.1080p.WEB-DL.x265.HEVC.10bit.AAC.2.0.RCVR.LavinMovie.mkv

其实还有个小瑕疵…不过那是细节了。

P.S. 其实我就是突然需要提取下载链接…才引发了本文。用vim可比写脚本方便。

插件

待续

 

Leave a Reply

Your email address will not be published. Required fields are marked *