【Linux】vim的基本操作与配置(上)

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦!

那么废话不多说,咱们直接进入正题!

1.初识vim

vim是一款多模式的文本编辑器,可以对一个文件进行编辑操作。

它一共有三个模式:命令模式,底行模式,插入模式。

下面我将分别对这三个模式进行讲解。

2.vim基本操作

2.1三种模式的切换

首先我们先创建一个文件test.c,然后用vim打开它。

然后就来到如图所示的界面,此时默认处于命令模式,暂时无法键入信息。

如果想要键入信息,需要输入字符'i',就会从命令模式编程插入模式:

左下角变成INSERT,可以键入信息。敲ESC返回命令模式。

要从命令模式切换到底行模式,需要敲SHIFT+L右边的那个键。合起来的效果就是冒号(敲ESC退出):

此事左下角出现了一个冒号,然后敲wq可以退出vim。w的意思是保存,q的意思是退出。如果在打开vim时你没有进行任何的编辑操作,可以不用保存,直接在底行模式下敲q退出。

注意,底行模式不可以直接切换到插入模式,插入模式也不可以直接切换到底行模式。都需要切换到命令模式过渡。

3.用vim写一个简单的c语言代码

咱们的vim没有配置过,所以写代码会有些难受,不过没关系,先试着写一下!

先切换到插入模式写入代码,再切换到底行模式退出。

随后用gcc编译器编译我们刚写好的test.c文件(后缀一定要是.c,否则编译不通过)。编译完成后会产生一个a.out的可执行程序,执行该程序后就可以看到代码允许的结果啦!

4.vim基本操作

4.1set nu

在底行模式下输入set nu,可以显示行号。

4.2复制,粘贴,撤销,剪切操作

首先这些操作是在命令模式下完成的。

yy:复制光标所在行的内容。支持在yy前加数字,表示复制包括光标所在行在内的以下几行。

p:粘贴,支持在p前加数字,表示粘贴被复制内容的次数。

dd:剪切,同样支持在dd前加数字,往往与p配合使用。

u:撤销

CTRL+r:对撤销命令进行撤销。

例如:我把光标放在int那一行,敲4yy,此时左下角会出现4 lines yanked,表示4行被选中。

然后我把光标放到第4行,敲3p:

所得结果就是把我刚才复制的内容粘贴了3遍。

敲u撤销以上操作。

可是我刚撤销完就后悔了,可以敲CTRL+r来进行还原:

我在第三行敲2dd:

那么原来的第3,4行就被剪掉了,可以选择合适的位置敲p再粘贴回来。

5.光标定位

vim在没有配置的情况下不支持鼠标定位,所有的操作需要通过键盘来完成。

5.1 SHIFT+4

敲SHIFT+4光标可以迅速定位到当前行的末尾。

5.2 SHIFT+6

敲SHIFT+6,光标可以迅速定位到当前行的开头。

5.3gg

gg:迅速将光标定位到文本的最开始。

5.4SHIFT+g

SHIFT+g:迅速将光标定位到文本的结尾。

当然也支持n shift g(n为数字)。可以将光标定位到文本的第n行。

5.5 h j k l

除了上下左右键可以移动光标,h j k l键也可以移动光标,大家可以自己试一下。

当然也支持在前面加数字,和上文基本类似。

5.6 w b

w:以单词为单位进行光标后移。

b:以单词为单位进行光标前移。

6.大小写转换

在命令模式下,SHIFT按着不动,再按ESC下面的波浪号可以实现大小写转换。

例如:

第三行本来想小写的,但不小心弄成大写的了,可以通过次操作将这一行转换成小写。

7.行内局部删除

在命令模式下:

x:从光标位置向后删除一个字符;n+x:从光标位置向后删除n个字符;

shift+x:从光标位置向前删除一个字符;n+shift+x:从光标位置向前删除n个字符;

8.文本替换

在命令模式下:

方法一:

r+字符:对光标位置的字符进行替换。n+r+字符:对光标后n个位置的字符进行替换。

例如:输入3 r a,就会将前三个字符替换成a。

方法二:

shift+r:进行替换模式。

从此,每次键入的字符会对光标后面的字符逐一替换:

9.从命令模式进入插入模式的常用方法

i:光标不变,直接进入插入模式。

o:光标另起一行,进入插入模式。

a:光标向后挪动一个字符,进入插入模式。

10.总结

在这篇文章中,我已经给大家讲了大部分关于vim的操作,绝大部分是在命令模式下的。

在下一篇文章中我会把剩下的有关vim的操作讲完,并且教大家如何配置vim,让我们在vim上能够十分方便的写代码。

在学会vim后,就可以开使学习指令提权了!如果你是普通用户,安装或删除一些东西没有权限,可以将自己的指令权限提升到root。这部分的知识会在接下来的一两篇文章中讲解到位!

相关推荐
hjjdebug1 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
Spring_java_gg1 小时前
如何抵御 Linux 服务器黑客威胁和攻击
linux·服务器·网络·安全·web安全
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发2 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信
我言秋日胜春朝★2 小时前
【Linux】冯诺依曼体系、再谈操作系统
linux·运维·服务器
饮啦冰美式2 小时前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu