加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

VIM常用命令集锦

发布时间:2020-12-15 19:17:34 所属栏目:安全 来源:网络整理
导读:话说 笔者早就想对这方面来个“大扫除”拉。学习有多种方式,你可以零碎的学习,也可以系统的学习。因为命令很琐碎,如果每次用的时候再去查,就会影响效率,而且关键时刻不能显摆哈哈。今天就对VIM常用命令做个总结。笔者博客的意义在于,每个命令都是结合

话说

笔者早就想对这方面来个“大扫除”拉。学习有多种方式,你可以零碎的学习,也可以系统的学习。因为命令很琐碎,如果每次用的时候再去查,就会影响效率,而且关键时刻不能显摆哈哈。今天就对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  也是直接到58410G 向右边移动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!不保存,那么所有的操作都不保存了
916G ==>16yy(16 lines yanked) ==>G ==>p  复制16-31行这16行,并且粘贴到最后一行之后
补充:p为在光标所在行下一行粘贴,P在光标所在行上一行粘贴
101853G ==>dG(删除从光标所在到最后一行数据)   删除末尾1611、:w mei.config  把刚才操作后的文件另存一份
12990G ==>10x 到第990行向后删除10个字符
13gg ==>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都是独立的。

还有一种方法是同时打开2个文件,然后执行上述命令


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链接,需要的拿去不谢。
这个好像不能上传附件,暂且搁置吧。

七、总结


绝知此事要躬行,实际中多多刻意练习,熟的就像说话一样,就不会忘记啦。


好了,晚安,下期再会!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读