Vim(官方网站)是一个高度可配置的文本编辑器,用于高效地创建和更改任何类型的文本。它以「vi」内置于大多数的 UNIX 系统和 Apple 的 macOS 系统。
Vim 具有一个多种模式的概念,不同模式的用途也不同,常用的模式有:
- 正常模式(Normal-mode)
- 插入模式(Insert-mode)
- 命令模式(Command-mode)
- 可视模式(Visual-mode)
命令输入 vim
后就进入了 Vim 编辑器(在一些 Linux 发行版或默认环境可能不带有 Vim 则需要自行安装),此时 Vim 属于「正常模式」,这个模式下的键盘按键都是命令按键,而不能直接输入文字内容。
在进入「插入模式」后就可以正常输入内容了。
而在文本内容输入完成后需要保存等操作就需要进入「命令模式」。
在用于一些搞错文本操作就需要「可视模式」
插入模式
此时,按下字母 i
后就进入到了「插入模式」,终端左下角会出现 – INSERT –
,这个模式下就可以正常输入文本内容。
如果想回到「正常模式」按 Esc
键即可。
除了使用小写的 i
外还有以下几种方法进入「插入模式」,且其作用也有所不同:
i
(小写)进入在当前光标所在的位置I
(大写,Shift
+I
)进入在当前光标所在行的开头a
(小写)进入当前光标位置的下一位A
(大写,Shift
+A
)进入当前光标所在行的结尾o
(小写)进入当前光标所在行的下一行并新建一行(类似于回车)O
(大写,Shift
+O
)进入当前光标所在行的上一行并新建一行
正常模式
在「插入模式」完成文本输入后可能需要对文本有一些操作如复制、粘贴等等,这时候就按 Esc
回到正常模式。
光标移动
H
向左移动L
向右移动K
向上移动J
向下移动
剪切、复制和粘贴
剪切使用 D
dd
剪切一整行d$
剪切光标位置到行到结尾
复制使用 Y
yy
复制整行3yy
复制多行如 3 行,在被复制的 3 行的第 1 行y$
从光标位置到行的结尾
粘贴使用 P
p
粘贴
撤销
如果剪切、粘贴时有误操作可以使用撤销,撤销使用 U
如果不幸在撤销操作也失误,想撤销「撤销」操作可以按Ctrl
+ R
删除
在使用 H
L
J
K
移动光标到指定删除字符后按 X
即可将其删除。
替换
在使用 H
L
J
K
移动光标到指定替换对字符后,先按 R
键再输入替换对字符。
跳到行开头和结尾
^
(Shift
+ 6
)光标移动到当前行的开头
$
(Shift
+ 4
)光标移动到当前行的结尾
跳到指定行
如果想到第一行使用小写的 g
如果想到最后一行使用使用大写的 G
(Shift
+ G
)
如果想跳到指定行则使用 行数
+ 大写的 G
,如跳到第 7 行:7G
但是如果行数太多你也分不清第几行怎么办?这时候可以用到「命令模式」,按 Esc
确保回到「正常模式后」直接输入:set nu
即可在每行前显示行号。
命令模式
「命令模式」主要用于文件的保存、退出、查找、替换。
在「插入模式」输入完文本后想要保存时,先按 Esc
回到「正常模式」,然后输入冒号,此时终端左下角会出现冒号。
保存
保存使用 :w
# 如果是编辑现有的文件需要直接保存
:w
# 如果是新建的文件需要保存到指定路径
:w /home/conners/test.txt
退出
退出使用 :q
# 在保存后退出文件使用
:q
# 其实也可以将保存和退出一起使用
:wq
# 有时候修改到一半觉得还不如不改,想要不作任何修改退出,还原修改操作
:q!
查找
使用 /
加上要查找的字符就可以了,光标会自动移动到查找到的第一个结果。
如果存在多个结果,可以按 N
移动到下一个或者按 Shift
+ N
移动到上一个结果。
# 比如要查找字母 a,注意此时前面没有冒号!
/a
替换
# :/s/被替换/替换成
# 比如将当前光标所在行的 a 替换成 A
:/s/a/A
# 如果想对整个文件每行的第一个 a 进行替换
:%s/a/A
# 如果想对整个文件所有的 a 进行替换
:%s/a/A/g
替换操作时出现错误记得可以使用之前提过的 U
和 Ctrl
+ R
其他
有时候在编辑到一半时你可能需要再通过命令查看一些操作,比如你在写一篇日志但是不记得今天是几号了。
在 Vim 里运行命令
# :! 接其他命令,比如临时查看下日历
# 在新界面查阅后按回车键返回
:!cal
:set
# 显示行号
:set nu
# 关闭显示行号
:set nonu
但是这个操作是针对当前打开的 Vim 的,关闭后再开就没有了,如果想打开任何文件都显示行号需要修改 Vim 配置文件。
# Debian/Ubuntu 和 CentOS 的 Vim 配置路径不同
# Debian/Ubuntu
vim /etc/vim/vimrc
# CentOS
vim /etc/vimrc
在进入「vimrc」配置文件后:
- 按
Shift
+G
移动到配置文件底部 - 按
O
新建一行 - 输入文本
set nu
(⚠️注意不带冒号) - 按
Esc
回到正常模式并输入:wq
保存并推出 - 如此,新打开的 Vim 就会默认显示行号了
可视模式
可视模式主要用于对文件大量操作进行一次完成。
进入可是模式的三种方法
v
(小写)字符可视模式V
(大写Shift
+V
)行可视模式Ctrl
+v
块可视模式
比较常用的是块可视模式,先看一个文本
批量添加
aaaaaa
bbbbbb
cccccc
ddddd
比如想在每行第一个字母后面添加数字 1
- 将光标移动到第一行的第二个
a
- 首先按
Ctrl
+V
左下角出现– VISUAL BLOCK –
表明进入块可视区域,这时候移动光标选择区域比如自上而下选到最后一行的第二个d - 按下
Shift
+I
(也就是大写 I)输入内容比如数字 1 - 按两下
Esc
就可以看到文本内容变成
a1aaaaa
b1bbbbb
c1ccccc
d1dddd
选择删除
以上面那段文本为例,进入「可视模式」后使用方向键移动光标可以选择多列多行,选择完成后按 D
键删除光标所选区域内容。
同样,对于撤销操作同样可以使用 U
和 Ctrl
+ R