话说
笔者早就想对这方面来个“大扫除”拉。学习有多种方式,你可以零碎的学习,也可以系统的学习。因为命令很琐碎,如果每次用的时候再去查,就会影响效率,而且关键时刻不能显摆哈哈。今天就对VIM常用命令做个总结。笔者博客的意义在于,每个命令都是结合实际运用场景来讲的,而不只是扔一堆命令过来。
难度系数:★★★☆☆
建议用时:2H
来源:《Linux鸟哥私房菜》vim章节,感谢鸟哥,笔者只是实践,不算侵权吧?
目录
一、vim理论
二.串联琐碎命令
三、Visual Block
四、多文件编辑
五、多窗口编辑
六、常用命令示意图
七、总结
一、vim理论
VIM有3种模式:一般模式、编辑模式、命令行模式,每种命令都需要在对应的模式下操作下有效。
一般模式 ==》编辑模式: i I a A ……
一般模式到命令模式: : / ?
命令模式、编辑模式==》一般模式 ESC
注意:命令模式无法直接到编辑模式 搞清楚这个,就知道什么情况下该用什么命令。
二.串联琐碎命令
命令是琐碎的,最好的方式就是串联起来。以下就是连贯思路训练命令,自己找个文件灵活实验即可。笔者的步骤都是按照教材执行的,先命令,后解释,而且是连贯执行的,有逻辑的,而不是仅仅只为命令而命令;读者最好先看后面解释,心中大体有数后然后安装命令操作。
声明:注入输入法状态:英文状态
- 1、vim a.txt 打开一个文件
- 2、set nu 设置行号
- set nonu 取消设置行号
- 3、gg (一般模式) 到首行
- G 查看多少行、到末行
- 58G 直接到58行
- :58 也是直接到58行
- 4、10G 向右边移动10个字符
- 5、 gg 跳转到首行
- 6、 /application 查找application出现在第几行?
- 7、:16,31s/application/mei/gc 把16~31行之间的application替换为mei,并且在替换的时候给提示
- :16,31s/application/mei/g 不给提示替换(c表示confirm)
- 8、u 撤销(反悔了,撤销操作);或者:q!不保存,那么所有的操作都不保存了
- 9、 16G ==>16yy(16 lines yanked) ==>G ==>p 复制16-31行这16行,并且粘贴到最后一行之后
- 补充:p为在光标所在行下一行粘贴,P在光标所在行上一行粘贴
- 10、1853G ==>dG(删除从光标所在到最后一行数据) 删除末尾16行
- 11、:w mei.config 把刚才操作后的文件另存一份
- 12、990G ==>10x 到第990行向后删除10个字符
- 13、 gg ==>O 在第一行之前新增一行,并且输入“Today is Sunny! Leg's go!” 补充:o O 表示:o表示在光标所在行下一行插入一行,跟Enter一样;O表示在光标所在行上一行插入,而且直接进入编辑模式。 14、:wq! 保存后离开
然后傻瓜式的操作以上命令,就像“警察捉小偷”游戏一样,操作N遍,就可以在关键时刻显摆拉。
笔者一直认为:如果你刻意专业练习,就会快速掌握;如果等待自然熟练,那就是时间问题了。还记得盲打么?如果你依靠:多聊天、多打游戏来熟悉键盘,我依靠专业训练指法联系,几周过去,我肯定比你牛。因为专注和刻意练习的效果差别就是量级的差别。很多事情都是如此。
三、Visual Block
以上命令太基础?来点好玩的:Visual Block ——块选择
我们要实现类似在word、Notepad++ 或者subline test中的选择块的功能(Alt + 选择)
应用场景:比如在配置多个服务器主机名的时候,需要快速复制,如何复制一块呢?
复制之后样子是这样的:
- 192.168.1.1 host1.class.net host1
- 192.168.1.2 host1.class.net host1
- 192.168.1.3 host1.class.net host1
- 192.168.1.4 host1.class.net host1
- 192.168.1.5 host1.class.net host1
- 192.168.1.6 host1.class.net host1
- 192.168.1.1 host1.class.net host1
- 192.168.1.1 host1.class.net host1
- 192.168.1.1 host1.class.net host1
- 192.168.1.1 host1.class.net host1
- 192.168.1.1 host1.class.net host1
- 192.168.1.1 host1.class.net host1
其实很简单:
这么做:
1)vim 打开该文件;
2)Ctrl + v 方式进入Visual Block模式;
3)移动光标选择需要选择的,就会反白选择;
4)y 复制;
5)p 粘贴
结论
块选择按键意义:
v 字符选择
V 行选择
Ctrl + v 块选择,可以用长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除
四、多文件编辑
场景:你需要把一个文件的内容复制到另外一个文件,如何做?
答曰:打开2个窗口,然后Command + C ; Command + P
这样也可以,如果你想用命令呢?比如10yy,然后p可以么?不可以的,因为每个vim都是独立的。
vim host.txt ./myFiles/b.txt 同时打来2个文件
1G 复制指定行
10yy
:files 查看打开的文件
:n 切换到打开的下一个文件
:N 切换到打开文件的上一个文件
一图胜千言
就是这么好玩!
五、多窗口编辑
在Excel、Word中都有切割窗口或者冻结窗口的功能,方便在很长很长的文档中对比修改,而不用来回换页数。
加入几万页呢?也Ctrl + f (下一页),Ctrl + b (上一页),哈哈。
很简单:
:sp [filename] 切割窗口。如果无参数,切割当前窗口;如果有参数,打开新窗口
ctrl + w +j 移动到下方窗口 等同于:ctrl + w + ⏬
ctrl + w +k移动到上方窗口 等同于:ctrl + w +⏫
:q 离开
可以理解为:split page
还是一图胜千言
打开多个窗口呢?
:sp ./myFile/b.txt 指定文件名即可
很方便吧?总比找半天找不到冻结窗口在哪里来要好吧?而且,一个命令打开一个窗口,我的感觉和鸟哥一样,感觉很酷炫。
六、常用命令示意图
说了那么多命令,不就是死记硬背么?是的。
其实,世界上很多知识性的东西都是死记硬背。死记硬背说的知识记忆的方式,不论你通过什么方式,反正最终都是要记住,有本事你不记忆,只靠理解,在这个偌大的世界走走看?
用鸟哥一张图总结下零碎命令吧?
.xmind链接,需要的拿去不谢。
这个好像不能上传附件,暂且搁置吧。
七、总结
绝知此事要躬行,实际中多多刻意练习,熟的就像说话一样,就不会忘记啦。
好了,晚安,下期再会!