【Linux】vim编辑器

【Linux】vim编辑器_第1张图片  

这一趴我们要学习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

打开以后就是这个样子的:

【Linux】vim编辑器_第2张图片

Ⅲ. 3种模式

其实vim下有很多种模式,但我们目前只需掌握这三种:命令模式、插入模式、底行模式。

1.命令模式 (command mode)

又叫普通模式 / 默认模式。是vim下最重要的模式。

我们刚进入vim,光标冻结在右上角,此时是没法输入东西的,这正是处于命令模式。

【Linux】vim编辑器_第3张图片  

在命令模式下,可以达成的有:

✨进入插入模式 or 底行模式;

控制光标的移动;

删除字符;

2.插入模式(Insert mode)

我们刚进入vim,是在命令模式下,这是没法打字的。

要想打字,得按 i 键进入插入模式。(a键 或 o键也可以)

此时左下角会显示 ”INSERT“ :

【Linux】vim编辑器_第4张图片  

只有在插入模式下,才能做文字输入。

❓如果发现前面有字打错了(处于插入模式ing),想把光标移到前面去改,应该怎么办?

按Esc进入命令模式,此时才能移动光标,去前面删除。

3.底行模式(last line mode)

我们想要退出vim的话,得先进入底行模式。

ⅰ. 如果此时处于命令模式,那按 shift+冒号键 (其实就是输入: )就可进入底行模式,

此时光标位于左下角:

【Linux】vim编辑器_第5张图片

ⅱ. 如果此时处于插入模式,那得先按Esc键转成命令模式,再按 shift+ 冒号键 进入底行模式。

也就是说,插入模式是没法直接进入底行模式的,必须经过命令模式。

进入底行模式以后,我们可以保存文件or退出。选项:

q:退出

w: 保存当前文件

wq:保存并退出

q! :强制退出

底行模式下,可以达成:

✨保存 or 退出文件;

进行文件的替换;

查找字符串;

列出行号。


插入模式 or 底行模式想要进入命令模式的话,无脑按Esc即可。

刚刚说了,命令模式是vim下最重要的模式。有多重要?

它就像核心,其他模式都是从命令模式进入的。

【Linux】vim编辑器_第6张图片

Ⅳ. 常见操作

命令模式下

❗下面这些操作都是在命令模式下进行的。

复制粘贴组

yy 复制
p 粘贴
[n] yy 复制从当前行开始的n行
[n] p

将yy的内容粘贴n份(默认粘贴到当前行的下一行,也可移动光标指定位置)

示例:我想把hello world拷贝3次。

Step1:先把光标放在指定行,按Esc转换到命令模式(❗),然后按yy复制

Step2:按3次p。按几次粘贴几次。

或者直接按3+p。

【Linux】vim编辑器_第7张图片

撤销组

u 撤销
ctrl+u 取消u的撤销操作

光标定位组

shift + g 光标定位到文件的最后一行 (的开头)
gg ……的最开始
shift + 4 将光标定位到当前行的最末尾
shift + 6 ……的最开始
n + shift + g 光标定位到任意行(n为行号)

示例:

【Linux】vim编辑器_第8张图片

光标移动组

如果移动光标是以字母为单位的话,比较精细但慢,

如果想在一行快速移动,我们按w/b,以单词为单位进行移动。

w 以单词为单位进行光标的向前移动
b ……的向后移动

命令模式下,我们要习惯使用H、J、K、L来上下左右移动光标。

以前的键盘是没有上下左右的移动按键的,那时的人们用这四个键来充当。

现在即使有了⬆️⬇️键,我们依然要习惯H J K L,

因为以后要学的一些组合命令,只支持用 H J K L。如批量化注释。

可以这么记:

【Linux】vim编辑器_第9张图片

剪切组

剪切与p(粘贴)配合使用。不用p的话,就是删除。

dd 剪切 / 删除
ndd 剪切从当前行开始的n行

切换、替换组

shift + ~ 大小写切换
r 替换光标所在位置的字符
[n] r 替换光标所在位置开始的n个字符
shift + r 可进入replace模式(左下角会有REPLACE)。此模式下,输入即可替换。

示例 r 与[n] r :how to把big变成pig,再变成111?

【Linux】vim编辑器_第10张图片

示例shift + r:进入replace模式后,替换起来很free~

【Linux】vim编辑器_第11张图片

删除组

x 或 X(即shift+x) 删除光标所在的字符
[n] x或X 删除当前光标位置开始的后n个字符(x从左往右删,X从右往左删)

示例x:我们现在要删掉1234的2个字符,删完后究竟是12,还是34呢?

【Linux】vim编辑器_第12张图片  

可见是12。x是从左往右删的。

示例X:1234删完后究竟是12,还是34呢?

【Linux】vim编辑器_第13张图片

可见是34。X是从右往左删的。

底行模式下

❗要完成以下操作,得先进入底行模式

set nu / nonu 打开 / 取消行号
vs 文件名 分屏操作
w / w! 保存 / 强制保存
q / q! 退出 / 强制退出
!cmd(cmd是具体的命令) 不退出vim,执行对应的命令

示例 开关行号:

set nu 打开行号

【Linux】vim编辑器_第14张图片

set nonu 取消行号

【Linux】vim编辑器_第15张图片

示例 分屏:

vs 文件名 分屏操作

vs 配合wq也可以新建文件并保存:

【Linux】vim编辑器_第16张图片

❓有了分屏以后,我们进入底行,进的到底是哪个文件的底行呢?‍

光标在哪个文件下,进的就是哪个的底行。

❓光标怎么在两个文件之间切换?

ctrl按住不动,w快速按两下。

我们以后阅读别人的代码时,常常要用到分屏:一边是声明、头文件,一边是实现。

示例!cmd:

!man : 在vim下查看man手册

!gcc code.c : 编译code.c

!./a.out : 执行a.out

【Linux】vim编辑器_第17张图片


OK,以上就是关于vim的介绍。下一趴我们要学习如何使用Linux下的编译器。

【Linux】vim编辑器_第18张图片

你可能感兴趣的:(linux,编辑器,vim)