这一趴我们要学习vim编辑器,知道vim是什么、掌握它的3种模式以及学会其常见操作。
目录
Ⅰ. 引入
Ⅱ. 什么是vim?
Ⅲ. 3种模式
Ⅳ. 常见操作
命令模式下
复制粘贴组
撤销组
光标定位组
光标移动组
剪切组
切换、替换组
删除组
底行模式下
Ⅰ. 引入
在学习vim之前,我们先来回忆一下:
之前写代码、跑代码、调试代码,是不是都在VS2019上进行的?
像VS2019这样的软件,其实是一个内含多种工具的集成开发环境(Integrated Development Environment,简称IDE)。
它为程序员提供了一个集中的开发环境,我们编写、调试和测试都在IDE上进行。
我们将要学习的vim,仅仅用于编写代码,其功能是IDE的一部分,
而调试、测试等都分别在其他的软件上进行。
❓既然我们已经有IDE这么强大的软件了,为什么还要学vim呢?
一来,我们在公司里或多或少会需要直接登服务器 来进行代码的编写。
所以,在没有IDE的情况下,我们要会用命令行写代码。
二来,使用vim可以帮我们感受文本编辑器的多样化,并且vim更加切近底层。
而且,vim是一个功能极其强大的软件。
某人曾说过:“世界上只有三种编辑器 vim, Emacs, 其他。”,
据说,一个优秀的 vim 程序员,操作编辑文本的能力和效率可能是其他人的4-5倍!
因此,学vim将会是一件很helpful的事!🥰
Ⅱ. 什么是vim?
vi / vim都是Linux和Unix系统下的多模式文本编辑器,其性质和nano记事本相似。
vim是vi的升级版,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,
如语法加亮,自动缩进等。
vim功能十分强大,因此学习成本较其他编辑器要高很多。
那怎么用vim打开一个文件呢?
我们先来创建一个test.c文件:
$ touch test.c
然后“vim+文件名”就可以打开它:
$ vim test.c
打开以后就是这个样子的:
Ⅲ. 3种模式
其实vim下有很多种模式,但我们目前只需掌握这三种:命令模式、插入模式、底行模式。
1.命令模式 (command mode)
又叫普通模式 / 默认模式。是vim下最重要的模式。
我们刚进入vim,光标冻结在右上角,此时是没法输入东西的,这正是处于命令模式。
在命令模式下,可以达成的有:
✨进入插入模式 or 底行模式;
控制光标的移动;
删除字符;
2.插入模式(Insert mode)
我们刚进入vim,是在命令模式下,这是没法打字的。
要想打字,得按 i 键进入插入模式。(a键 或 o键也可以)
此时左下角会显示 ”INSERT“ :
只有在插入模式下,才能做文字输入。
❓如果发现前面有字打错了(处于插入模式ing),想把光标移到前面去改,应该怎么办?
按Esc进入命令模式,此时才能移动光标,去前面删除。
3.底行模式(last line mode)
我们想要退出vim的话,得先进入底行模式。
ⅰ. 如果此时处于命令模式,那按 shift+冒号键 (其实就是输入: )就可进入底行模式,
此时光标位于左下角:
ⅱ. 如果此时处于插入模式,那得先按Esc键转成命令模式,再按 shift+ 冒号键 进入底行模式。
也就是说,插入模式是没法直接进入底行模式的,必须经过命令模式。😥
进入底行模式以后,我们可以保存文件or退出。选项:
q:退出
w: 保存当前文件
wq:保存并退出
q! :强制退出
底行模式下,可以达成:
✨保存 or 退出文件;
进行文件的替换;
查找字符串;
列出行号。
插入模式 or 底行模式想要进入命令模式的话,无脑按Esc即可。
刚刚说了,命令模式是vim下最重要的模式。有多重要?
它就像核心,其他模式都是从命令模式进入的。
Ⅳ. 常见操作
命令模式下
❗下面这些操作都是在命令模式下进行的。
复制粘贴组
yy | 复制 |
p | 粘贴 |
[n] yy | 复制从当前行开始的n行 |
[n] p | 将yy的内容粘贴n份(默认粘贴到当前行的下一行,也可移动光标指定位置) |
示例:我想把hello world拷贝3次。
Step1:先把光标放在指定行,按Esc转换到命令模式(❗),然后按yy复制
Step2:按3次p。按几次粘贴几次。
或者直接按3+p。
撤销组
u | 撤销 |
---|---|
ctrl+u | 取消u的撤销操作 |
光标定位组
shift + g | 光标定位到文件的最后一行 (的开头) |
---|---|
gg | ……的最开始 |
shift + 4 | 将光标定位到当前行的最末尾 |
shift + 6 | ……的最开始 |
n + shift + g | 光标定位到任意行(n为行号) |
示例:
光标移动组
如果移动光标是以字母为单位的话,比较精细但慢😥,
如果想在一行快速移动,我们按w/b,以单词为单位进行移动。
w | 以单词为单位进行光标的向前移动 |
---|---|
b | ……的向后移动 |
命令模式下,我们要习惯使用H、J、K、L来上下左右移动光标。
以前的键盘是没有上下左右的移动按键的,那时的人们用这四个键来充当。
现在即使有了⬆️⬇️键,我们依然要习惯H J K L,
因为以后要学的一些组合命令,只支持用 H J K L。如批量化注释。
可以这么记:
剪切组
剪切与p(粘贴)配合使用。不用p的话,就是删除。
dd | 剪切 / 删除 |
---|---|
ndd | 剪切从当前行开始的n行 |
切换、替换组
shift + ~ | 大小写切换 |
---|---|
r | 替换光标所在位置的字符 |
[n] r | 替换光标所在位置开始的n个字符 |
shift + r | 可进入replace模式(左下角会有REPLACE)。此模式下,输入即可替换。 |
示例 r 与[n] r :how to把big变成pig,再变成111?
示例shift + r:进入replace模式后,替换起来很free~🥰
删除组
x 或 X(即shift+x) | 删除光标所在的字符 |
---|---|
[n] x或X | 删除当前光标位置开始的后n个字符(x从左往右删,X从右往左删) |
示例x:我们现在要删掉1234的2个字符,删完后究竟是12,还是34呢?
可见是12。x是从左往右删的。
示例X:1234删完后究竟是12,还是34呢?
可见是34。X是从右往左删的。
底行模式下
❗要完成以下操作,得先进入底行模式。
set nu / nonu | 打开 / 取消行号 |
---|---|
vs 文件名 | 分屏操作 |
w / w! | 保存 / 强制保存 |
q / q! | 退出 / 强制退出 |
!cmd(cmd是具体的命令) | 不退出vim,执行对应的命令 |
示例 开关行号:
set nu 打开行号
set nonu 取消行号
示例 分屏:
vs 文件名 分屏操作
vs 配合wq也可以新建文件并保存:
❓有了分屏以后,我们进入底行,进的到底是哪个文件的底行呢?😵💫
光标在哪个文件下,进的就是哪个的底行。
❓光标怎么在两个文件之间切换?
ctrl按住不动,w快速按两下。
我们以后阅读别人的代码时,常常要用到分屏:一边是声明、头文件,一边是实现。
示例!cmd:
!man : 在vim下查看man手册
!gcc code.c : 编译code.c
!./a.out : 执行a.out
OK,以上就是关于vim的介绍。下一趴我们要学习如何使用Linux下的编译器。😀