BOOK
Intro(Vim实用技巧_高清_中文版.pdf) #
练习文件「practical-vim」repo:https://github.com/rxedu/practical-vim
当前clone文件路径~/Desktop/_scratch/practical-vim。第一章 vim解决问题的方式 #
1).重复命令:.2).复合命令:(C:c$, s:cl, S:^c, I:^i, A:$a, o:A<CR>, O:ko)3).将 + 号前后追加空格,采用删1加3的方式:使用s命令删除当前光标下的+,然后输入空格+空格。4).重复,回退命令,edit:{.,u},f/t:{;,,},F/T:{;,,},/pattern:{n,N},?pattern:{n,N},:s:{&,u},macro:{@x,u}5).使用*查找光标下的单词,{n,N}上下。第二章 普通模式 #
7).停顿时请移开画笔,想象在作画,经常<C-[>。8).需要换行尽量使用<Esc>o,把修改切成最小粒度。使用<up>,<down>,<left>,<right>会产生新的撤销块。9).构造可重复的修改,比如删除【The end is nigh】中的 nigh 。可以使用如下,也可以在 vimgolf中进行判决
反向删除dbx,. == x
正向删除bdw,. == dw
删除整的单词daw,. == daw✅10).使用<C-a>,[count]<C-x>对光标下|后的数字进行加减,默认八进制,通过配置文件设置set nrformats=修改成十进制11).能重复就别用次数12).操作符待决策模式g:g~,gu,gU,gUgU | gUU,>,>>,<,=,第三章 插入模式 #
13).插入模式即使更正错误:即使在bash shell中,也可以使用。【<C-h>:删除前一个字符(同退格),<C-w>:删除前一个单词,<C-u>:删除至行首】15).不离开插入模式,粘贴寄存器中的文本。将第一行的书名粘到第二行末,光标在第一个字符。yt,jA␣<C-r>0.<Esc>
16).随时随地做运算:在插入模式中,使用<C-r>=调用表达式寄存器,输入表达式6*35<CR>做运算,将结果插入到当前光标下。17).用字符编码插入非常用字符:<C-v>u{四位十六进制 unicode}:例<C-v>u00bf-¿。查看贯标下的字符使用:ga。18).插入以二合字母{char1}{char2}表示的字符<C-k>{char}{char},例如<C-k>12-½,<C-k>?I-¿,使用命令查看二合字母:digraphs,:h digraph-table。:h digraphs-default第四章 可视模式 #
20).深入理解可视模式: 使用:<C-g>在 visual 模式和 select 模式切换,选择模式相当于普通编辑器中选择后直接输入替换那种效果。21).选择高亮选区: 【v:面向字符,V:面向行,<C-v>:面相列块,gv:重选上次高亮区域】,重复会取消选择,比如连着按两次v。22).重复执行面向行的可视命令:Vj>.,Vj2>23).只要可能,最好用操作符命令,而不是可视命令:vitU可是模式中会影响部分(等长),gUit普通模式在的操作符刚好。

24).用面向列块的可视模式编辑表格数据: 减少列之间的间距并以竖线分割,<C-v>3jx...gvr|,添加横线yypVr-。
25).修改列文本: 删除影响所有行,但是修改的话只影响顶行,使用<CR>后会变得正常。修改sprite -> components。<C-v>jjec,components,<Esc>。
26).在长短不一的高亮块后添加文本: (可视模式中的i,a被视为文本对象的组成部分)。在每行末尾添加;:<C-v>jj$A;<Esc>
第五章 命令行模式 #
在按下
:键时,Vim 会切换到命令行模式。出于历史原因,在命令行模式中执行的命令又被称做 Ex 命令。在我们按/调出查找提示符或用<C-r>=访问表达式寄存器(参见技巧 16)时,命令行模式也会被激活。27).结识 Vim 的命令行模式:
有些命令和插入模式通用。例如,可以用<C-w>和<C-u>分别删除至上个单词的开头及行首,
也可以用<C-v>或<C-k>来插入键盘上找不到的字符(技巧49),
还可以用<C-r>{register}命令使用寄存器,如技巧15。
30).在指定范围上执行普通模式命令:使用可视模式选择后 摁:冒号 输入normal A;执行每行追加;命令。第七章 打开及保存文件 #
45).以超级用户权限保存文件::w !sudo tee % > /dev/null第十一章 宏 #
70).录制宏插入可变数值: 比如在每一行前面追加 1)2)… 等。:let i = 1,qa,I<C-r>=i<CR>)<Esc>,:let i += 1,q。
Reference #