vim基本操作
Vim(Vi Improved)是一款功能强大的文本编辑器,是Unix/Linux系统中广泛使用的编辑器之一。它源于上世纪70年代开发的Vi编辑器,后来经过不断完善和扩展而发展成为Vim。
Vim的主要特点包括:
- 高度可配置和扩展性:Vim支持大量插件和脚本,用户可以根据需求自定义Vim的行为。
- 高效的编辑模式:Vim采用基于模式的编辑方式,用户可以通过键盘命令快速完成各种编辑操作。
- 跨平台:Vim支持多种操作系统,包括Linux、macOS和Windows。
- 丰富的功能:Vim提供了语法高亮、代码折叠、多缓冲区编辑等强大的编辑功能。
Vim是一款功能强大、高度可定制的文本编辑器,广泛应用于各种编程和文本编辑场景。它的发展历程也体现了开源软件不断创新和完善的过程。
使用vim前,如果你没有下载过,可以执行以下指令下载vim:
yum install -y vim
执行该指令需要root
权限,要么加上sudo
进行提权,要么以root
身份执行。
下载好vim后,我们就可以用它来编辑文本了,vim既可以直接编辑现有文本,也可以直接创建一个不存在的文件。
语法为:
vim 文件名
比如在此我要编辑一个test.c
的文件,就输入vim test.c
,打开后界面如下:
这个时候你还不能编辑,vim是有多种模式的,默认情况下处于普通模式
。此时不能编辑文本,如果想要书写文本,要进入插入模式
。只需要按一下i
,就可以从普通模式
进入插入模式
了。此时你的左下角会有INSERT
样式,说明你成功进入了插入模式。
现在你就可以正常编辑代码了,我这里写一个简单的C语言代码:
那么要如何退出保存呢?想要退出保存,就先进入底行模式,而当前的插入模式不能直接进入底行模式,要先按下Esc键回到普通模式。当你左下角的INSERT消失了,就说明你退出插入模式了,如果想从普通模式进入底行模式,按下shift + ;,其实也就是按下一个:,此时你会发现你的光标跳转到了底部,并且底部多出了一个冒号:。
说明你成功进入底行模式
了,先教两个基本的命令:
w
:保存当前修改
q
:退出
一般来说,我们会选择保存并退出,此时只需要把两个字母一起输入即可wq
。
再摁下Enter
键,表示执行该指令,此时我们就可以退出vim
了。如果你这个文件原先就存在于目录中,你可以用cat
试试有没有修改成功,如果你这个文件是直接通过vim
创建的,那么你可以使用ls
看看该文件有没有创建出来。
在我的目录下,已经有该文件,并且写入成功了:
我们简单讲解完了vim
的三个模式:
Vim有以下几种主要的工作模式:
- 普通模式(Normal mode):
- 这是Vim的默认模式。
- 在这个模式下,键盘输入的字符被解释为命令,而不是插入文本。
- 用户可以使用各种快捷键进行文本编辑、光标移动、文件操作等。
- 插入模式(Insert mode):
- 在这个模式下,键盘输入的字符会被直接插入到文档中。
- 用户可以输入新的文本,编辑现有文本。
- 通过按下
i
、a
、o
等命令可以进入插入模式。
- 底行模式(Command-line mode):
- 在这个模式下,用户可以输入Vim的各种命令,如保存、退出、查找替换等。
- 通过按下
:
(shift
+;
)进入命令行模式。
接下来我就详细讲解各个模式下的操作。
普通模式
模式切换
vim有非常多种模式,而普通模式是所有模式的枢纽,不论进入任何一种模式,都要先回到普通模式。插入模式,底行模式等等各种模式想要切回普通模式,都是按Ecs
键。
普通模式进入插入模式:
按i
:从光标位置开始编辑文本
按
a
:从光标位置的下一个位置开始编辑文本按
o
:在光标位置插入新的一行,并从行首开始编辑文本
普通模式进入底行模式:
按:
,也就是shift
+ ;
移动光标
处于普通模式时,有很多快速移动光标的键位:
键位 | 功能 |
h |
光标向左移动,相当于← 键 |
j |
光标向下移动,相当于↓ 键 |
k |
光标向上移动,相当于↑ 键 |
l |
光标向右移动,相当于→ 键 |
G (shift + g ) |
光标移动到文本末尾 |
#G (# + shift + g ) |
光标移动到第# 行 |
$ (shift + 4 ) |
光标移动到当前行末尾 |
^ (shift + 6 ) |
光标移动到当前行开头 |
w |
以单词为单位,光标移动到下一个单词开头 |
b |
以单词为单位,光标移动到上一个单词开头 |
#l |
光标移动到该行第# 个位置 |
gg |
光标移动到文本开始 |
复制粘贴
键位 | 功能 |
dd |
剪切当前光标所在行 |
#dd |
剪切当前光标开始的# 行 |
yw |
把光标所处的单词,复制到缓冲区 |
#yw |
把光标开始的# 个单词,复制到缓冲区 |
yy |
把光标所处的行,复制到缓冲区 |
#yy |
把光标开始的# 行,复制到缓冲区 |
p |
将缓冲区的内容,复制到光标开始的位置 |
#p |
将缓冲区的内容,复制到光标开始的位置,连续复制# 份 |
删除
键位 | 功能 |
x |
删除光标所在的字符 |
#x |
删除光标开始的# 个字符 |
X (shift + x ) |
删除光标前一个字符 |
#X (# + shift + x ) |
删除光标前# 个字符 |
替换
键位 | 功能 |
r + xxx |
将光标所处的字符替换为xxx |
#r + xxx |
将光标开始的# 个字符替换为xxx |
这里要介绍另外一个模式,替换模式
,按下shift
+ r
就可以进入替换模式。此时输入的所有内容都会直接覆盖原先的内容,同样的如果需要退出,按Esc
即可回到普通模式。
撤销
键位 | 功能 |
u |
撤销上一次操作 |
底行模式
进入底行模式,按下shift
+ ;
即可,然后在:
后面输入指令。
行号
输入
set nu
:在文件的每一行前列出行号输入
set nonu
:取消每一行前的行号
效果如下:
查找
/xxx
:查找xxx
字符串,如果不是当前在字符串,按n
会跳到下一个该字符串
比如输入/hello
:
其就会高亮标注所有匹配的字符串,此时再按下n
,光标就会跳转到下一个字符串。不过这个高亮是不会自己消除的,不论你后面进入什么模式,这个高亮都会一直存在。
此时就要输入以下指令:
noh
:取消高亮