从零学起VIM

前言

笔者早年刚入行的时候就接触过Vim,当时还是真正的菜鸟,带我的师父是一个华为骨干员工,犹记得他给我指导如何保存并关闭文本:按Esc,然后输入:wq。还记得自己打开Vim编辑器,一个字符都敲不进去,然后问旁边的同事(此人年纪轻轻,但是擅长linux,我们都叫他XX大佬),他邪魅一笑说"i",我第一反应就是他故意逗我玩,然后他认真地说"你没有听错,就是键盘上的i"。为何时隔多年我还记得这两件微不足道的小事?原因就是初次接触Vim留给我深刻的印象:神秘感!

讲真,这几年的工作中,我很少用Vim,可能是因为大多使用Windows操作系统。但是后来涉足跨平台开发,甚至是嵌入式,就发现这东西还必须得会!因此,决定来个"朝花夕拾"。考虑到网上类似的教程非常之多,如果仅仅复制粘贴这些文字和命令,那么会非常枯燥无味,人们是不喜欢缺乏灵魂的事物的!你看,纵使我早年接触过Vim,但是因为用进废退,目前凭直觉能想起来的命令就是上述的那两个小故事。每次真的要用,还要在网上搜索一番。

下面我会以一个小白的心态重新认识这个"老朋友",尽量符合婴儿认识事物的这个过程。

一、Vim安装

运行

OK

下一步

我接受,下一步

下一步

下一步

改安装路径,安装

完成

二、常用命令实践

1.复现小故事情节

新建空文本

鼠标右键,用Vim编辑

按"i",下面出现"---插入---"字样,然后键入"hello",再按"Esc"(切换模式,用于执行命令),敲入我师父传授的":wq",则成功写入和保存文本!

2.删除字符,删除整行,删除单词

按"x"删除了Hello的首字母H,按"dd"删除了第一行整行,按"dw"删除了单词This。

3.复制粘贴与剪切粘贴

按"yy"复制第一行,用↓键将光标移动到底端,按"p"进行粘贴;接着用↑键将光标移动到第2行,按"dd"剪切该行,用↓键将光标移动到底端,按"p"进行粘贴。

4.跳转移动光标

按"gg"移动到文档开始,按大写"G"移动到文档末尾,按":3"移动到第三行,由此可以看出行号是从1开始编码而非从0编码。

5.撤销与重做

光标放到文档开头,按"dd"删除第一行,按"u"撤销删除,按"Ctrl+r"再此删除,按"u"再次撤销删除。

6.块选择

光标放到文档开头,按"v"选择字符,按→和←键选择多字符,再次把光标放到文档开头,按"Ctrl+v"选择块字符,按↓和→选择块区域。

7.设置行号

输入":set nu"设置行号,输入"set nonu"取消行号。

8.查找替换

输入":%s/vim/VIM",全文搜索小写的vim将其全部替换为大写的VIM。

9.拓展

0:移动到行首;

$:移动到行尾;

ndd:删除n行(包括当前行在内)

a:在光标后插入;

o:在当前行下方插入新行;

O:在当前行上方插入新行;

:split、:vsplit:分别水平和垂直分割窗口;

Ctrl + w、Ctrl + w:在窗口之间切换;

:w:保存文件;

:q:退出;

:q!:强制退出,不保存更改。

三、总结

vim的命令繁多,但常用的无非就是复制粘贴删除等,能用到查找替换应付常规操作已经足够了。对于笔者而言,把所有命令全死记硬背无疑是一种灾难,提纲挈领,举一反三才能把知识学活。另外,舍弃或许是另一种拥有,比如h/j/k/l可控制左/下/上/右,但总觉得没有方向键用着直观。因此,实践中潜移默化的记忆是最有效的,本文仅作抛砖引玉之用。

相关推荐
网易独家音乐人Mike Zhou13 分钟前
【Linux应用】开发板USB共享网络,网线或USB以太网共享网络(局域网连接PC和开发板,实现PC给开发板共享网络,USB通过NDIS驱动共享)
linux·网络·单片机·mcu·物联网·嵌入式·iot
basketball6161 小时前
Linux C 管道文件操作
linux·运维·c语言
浩浩测试一下1 小时前
Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用
linux·运维·windows·web安全·网络安全·系统安全·安全架构
stark张宇1 小时前
Linux 文件创建、删除、移动、复制基础知识整理
linux·服务器·centos
Jiangnan_Cai3 小时前
Linux 系统 docker 部署 Dify
linux·docker·大模型·dify
Two_brushes.4 小时前
【linux网络】深入理解 TCP/UDP:从基础端口号到可靠传输机制全解析
linux·运维·服务器
FJW0208144 小时前
【Linux】系统引导修复
linux·运维·服务器
慌糖4 小时前
CentOS 安装 Redis 简明指南
linux·redis·centos
设计师小聂!4 小时前
linux常用命令(一)
linux·运维·服务器
hnlucky4 小时前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web