Linux——Vi/Vim基础

Linux——Vi/Vim基础

焦虑烧麦 224 2022-05-06

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

什么是Vim

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vi/vim键盘图

image

vi/vim的使用

vi/vim分为三种模式

  1. 命令模式(Command mode)
  2. 输入模式(Insert mode)
  3. 底线命令模式(Last line mode)

命令模式

用户进入vi/vim时默认为命令模式
此状态下敲击键盘动作会被Vim识别为命令而非输入字符
常用的几个命令:

  • i:切换到输入模式
  • x:删除当前光标所在处的字符
  • “:” :切换到底线命令模式,以在最底一行输入命令

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在输入模式中使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • Enter:换行
  • Back Space:退格,删除光标前一个字符
  • DEL:删除光标后一个字符
  • 方向键:在文本中移动
  • Home/End:移动光标到行首/行尾
  • Page Up/Page Down:上/下翻页
  • Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC:退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):

  • q:退出程序
  • w:保存文件

按ESC键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
image-1651819394484

vi/vim 使用实例

使用 vi/vim 进入一般模式

使用:

$ vim Test.txt

命令建立一个.txt文件;然后直接输入 vi Test.txt即可进入一般模式;

记得善用Tab健进行自动补全,前提是该文件存在!

image-1651822378710

请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

按下 i 进入输入模式(也称为编辑模式),开始编辑文字
在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了
在编辑模式当中,在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。
这时键盘上除了 Esc 键之外,其他的按键都可以视作为一般的输入按钮,可以进行任何的编辑。

按下ESC健回到一般模式
在一般模式中按下 :wq 存储后离开vi
image-1651823233703

vi/vim按键说明

除了上面简易范例的 i, Esc, :wq 之外,这些按键也很实用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符

如果想要进行多次移动的话,例如向下移动 30 行;
使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可

[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
H 光标移动到这个屏幕的最上方那一行的第一个字符
M 光标移动到这个屏幕的中央那一行的第一个字符
L 光标移动到这个屏幕的最下方那一行的第一个字符
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n n 为数字。光标向下移动 n 行(常用)

image-1651824466833

image-1651824491543

第二部分:一般模式切换到编辑模式的可用的按钮说明
image-1651824538616

第三部分:一般模式切换到指令行模式的可用的按钮说明
image-1651824570692
image-1651824598878

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。
举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。