Linux:Vim 编辑器

Vim(官方网站)是一个高度可配置的文本编辑器,用于高效地创建和更改任何类型的文本。它以「vi」内置于大多数的 UNIX 系统和 Apple 的 macOS 系统。

多模式

Vim 具有一个多种模式的概念,不同模式的用途也不同,常用的模式有:

  • 正常模式(Normal-mode)
  • 插入模式(Insert-mode)
  • 命令模式(Command-mode)
  • 可视模式(Visual-mode)

简单来说,在输入命令 vi 后进入 Vim 的模式就是「正常模式」,在这个模式下输入的按键都是命令按键,而不能直接输入文字内容。

在进入「插入模式」后就可以正常输入内容了。

而在文本内容输入完成后需要保存等操作就需要进入「命令模式」。

在用于一些搞错文本操作就需要「可视模式」

命令输入

vim

后就进入了 Vim 编辑器,此时 Vim 属于「正常模式」,这个模式下的键盘按键都是命令按键,而不能直接输入文字内容。

插入模式

此时,按下字母「i」后就进入到了「插入模式」,终端左下角会出现「-- INSERT --」,这个模式下就可以正常输入文本内容。

如果想回到「正常模式」按「Esc」即可。

除了使用小写的「i」外还有以下几种方法进入「插入模式」,且其作用也有所不同:

  • i(小写)进入在当前光标所在的位置
  • I(大写,Shift + i)进入在当前光标所在行的开头
  • a(小写)进入当前光标位置的下一位
  • A(大写,Shift + )进入当前光标所在行的结尾
  • o(小写)进入当前光标所在行的下一行并新建一行(类似于回车)
  • O(大写,Shift + O)进入当前光标所在行的上一行并新建一行

正常模式

在「插入模式」完成文本输入后可能需要对文本有一些操作如复制、粘贴等等,这时候就按「Esc」回到正常模式。

光标移动

  • h 向左移动
  • l 向右移动
  • k 向上移动
  • j 向下移动

剪切、复制和粘贴

剪切使用 d

  • dd 剪切一整行
  • d$ 剪切光标位置到行到结尾

复制使用 y

  • yy 复制整行
  • 3yy 复制多行如 3 行,在被复制的 3 行的第 1 行
  • y$ 从光标位置到行的结尾

粘贴使用 p

  • p 粘贴

如果剪切、粘贴时有误操作可以使用撤销,撤销使用 u

如果不幸在撤销操作也失误,想撤销「撤销」操作可以按「Ctrl+R」

删除

在使用「hljk」移动光标到指定删除字符后按 x 即可将其删除。

替换

在使用「hljk」移动光标到指定替换对字符后,先按 r 键再输入替换对字符。

跳到行开头和结尾

^ 光标移动到当前行的开头
$ 光标移动到当前行的结尾

跳到指定行

如果想到第一行直接输入 g
如果想到最后一行直接输入 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

替换操作时出现错误记得可以使用之前提过的 uCtrl + R

其他

有时候在编辑到一半时你可能需要再通过命令查看一些操作,比如你在写一篇日志但是不记得今天是几号了。

在 vim 里运行命令
# :! 接其他命令,比如临时查看下日历
# 在新界面查阅后按回车键返回
:!cal
:set
# 显示行号
:set nu
# 关闭显示行号
:set nonu

但是这个操作是针对当前打开的 Vim 的,关闭后再开就没有了,如果想打开任何文件都显示行号需要修改 Vim 配置文件。

# Ubuntu 和 CentOS 的 Vim 配置路径不同
# Ubuntu
vim /etc/vim/vimrc
# CentOS
vim /etc/vimrc

在进入「vimrc」配置文件后

  1. 按「Shift + G」移动到配置文件底部
  2. 按「o」新建一行
  3. 输入文本「set nu」(⚠️注意不到冒号)
  4. 按「Esc」回到正常模式并输入「:wq」保存并推出

如此,新打开的 Vim 就会默认显示行号了

可视模式

可视模式主要用于对文件大量操作进行一次完成。

进入可是模式的三种方法

  • v(小写)字符可视模式
  • V(大写)行可视模式
  • Ctrl + v 块可视模式

比较常用的是块可视模式,先看一个文本

批量添加

aaaaaa
bbbbbb
cccccc
ddddd

比如想在每行第一个字母后面添加数字 1

  1. 将光标移动到第一行的第二个a
  2. 首先按「Ctrl + v」左下角出现「-- VISUAL BLOCK --」表明进入块可视区域,这时候移动光标选择区域比如自上而下选到最后一行的第二个d
  3. 按下「Shift + i」(也就是大写 I)输入内容比如数字 1
  4. 按两下「Esc」

就可以看到文本内容变成

a1aaaaa
b1bbbbb
c1ccccc
d1dddd

⚠️注意:部分 SSH 工具可能无法完成该操作。

选择删除

以上面那段文本为例,进入「可视模式」后使用方向键移动光标可以选择多列多行,选择完成后按「d」键删除光标所选区域内容。

同样,对于撤销操作同样可以使用「u」和「Ctrl + r」

Conners Hua

这个家伙很懒,什么都没有留下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注