目录
一、拾枝杂谈
1.什么是vi 和 vim?
- vi (即 Visual Editor) :
- vi 本身是 Unix 系统上最传统的文本编辑器之一,由 Bill Joy 在 1970 年代后期创建。
- vi 是一个模态编辑器(支持不同的操作模式)。
- vi 最大的特点是几乎所有 Unix-like 系统都预装了vi,因此无论是在哪台服务器上,使用 vi 都比较方便。
- vim (即 Vi IMproved) :
- vim 是 vi 的增强版,由 Bram Moolenaar 在 1990 年代开发。
- vim 完全兼容 vi 的所有命令,并在此基础上增加了很多现代化的功能,如:语法高亮、多级撤销、插件支持、更牛逼的搜索和替换功能等。
- 在大多数现代 Linux 发行版(包括 CentOS 和 Ubuntu)中,当我们输入 vi 命令时,实际上启动的 默认 就是 vim。
2.vim三种模式分别是什么?
2.0 三种模式总览
vim 的核心旧在于其模态操作,主要有三种模式:普通模式 (Normal Mode)、插入模式 (Insert Mode) 和 命令行模式 (Command-line Mode / Ex Mode)。
vim 三种模式的切换,如下图所示:
2.1 普通模式(Normal Mode)
(1) 介绍:普通模式是 vim 的默认模式,当我们在Linux系统下通过vim/vi命令打开一个文件时,默认就是进入了普通模式。普通模式主要用于导航文件(移动光标)、执行命令(如删除、复制、粘贴、撤销、查找等),而不是直接输入文本。
(2) 如何进入:除了启动 vim 时默认进入普通模式外,在其他模式(插入模式、命令行模式)中按 Esc 键也可以回到普通模式。
(3) 如何退出:在普通模式下,按 i, a, o 等键进入插入模式;或者 按 : 键进入命令行模式。
2.2 插入模式(Insert Mode)
(1) 介绍:插入模式是唯一可以直接输入文本的模式,类似于普通文本编辑器,我们可以直接在键盘上输入想添加的文本。
(2) 如何进入:首先要通过vim命令,进入普通模式,在普通模式下,按下面的键,都可以进入插入模式——
i: 在光标当前位置前插入文本;
a: 在光标当前位置后追加文本;
o: 在当前行下方插入一个新行并进入插入模式;
O: 在当前行上方插入一个新行并进入插入模式;
I: 在当前行行首插入文本;
A: 在当前行行尾追加文本。
(3) 如何退出:在插入模式中按 Esc 键即可返回普通模式。
2.3 命令行模式(Command-line Mode)
(1) 介绍:命令行模式用于执行更复杂的命令,如保存文件、退出编辑器、搜索、替换、设置选项等。
(2) 如何进入:在普通模式按 : (冒号) 键。
(3) 如何退出:在命令行模式下按 Enter 键执行命令后返回普通模式。其中 :wq (write and quit) 表示保存并退出;:q! (quit forcefully) 则表示强制退出(不保存);:q (quit) 表示仅在文件自上次保存以来没有任何修改的情况下才能退出 Vim,如果文件有未保存的修改,Vim 会阻止退出并显示警告信息(例如 "No write since last change")。或者 按 Esc 键取消命令并返回普通模式。
3.快速入门案例:
首先我们需要远程登录Linux虚拟机,远程登录Linux虚拟机的方法up在上一篇CentOS博文中已经讲过了。
这里up直接通过Xshell登录,然后通过 “vim FirstJava.java” 创建一个演示文件,如下图所示:

然后我们输入 i 进入插入模式,来写一段 Java 代码,如下图所示:

保存退出后,这时候我们就会发现我们的root目录里面已经多了一个 FirstJava.java 文件,如下图所示:

二、vim快捷键汇总
1.普通模式下的快捷键:
普通模式下,光标移动相关的快捷键,如下表所示:
| 快捷键 | 光标移动情况 |
|---|---|
| h | 左移一个字符 |
| l | 右移一个字符 |
| j | 下移一行 |
| k | 上移一行 |
| w | 跳到下一个单词开头 |
| b | 跳到上一个单词开头 |
| 0 | 跳到行首(第一个字符) |
| ^ | 跳到行首(第一个非空白字符) |
| $ | 跳到行尾 |
| gg | 跳到文件开头 |
| G | 跳到文件结尾 |
| Ctrl + f | 向下翻一页 |
| Ctrl + b | 向上翻一页 |
| 数字 + G | 跳到指定行(例如 10G 跳到第10行) |
普通模式下,文件编辑相关的快捷键,如下表所示:
| 快捷键 | 文件编辑操作 |
|---|---|
| x | 删除光标所在字符 |
| dd | 删除当前行 |
| dw | 删除从光标到单词结尾的内容 |
| d$ | 删除从光标到行尾的内容 |
| yy | 复制当前行(可通过 数字 + yy 复制多行) |
| yw | 复制从光标到单词结尾的内容 |
| y$ | 复制从光标到行尾的内容 |
| p | 在光标后粘贴 |
| P | 在光标前粘贴 |
| cc | 删除当前行并进入插入模式 |
| cw | 删除从光标到单词结尾的内容并进入插入模式 |
| c$ | 删除从光标到行尾的内容并进入插入模式 |
| r | 替换光标所在字符(输入一个字符后自动返回普通模式) |
| u | 撤销上一次操作 |
| Ctrl + r | 重做上一次撤销的操作 |
| . | 重复上一次的修改命令 |
普通模式下,模式切换相关的快捷键,如下表所示:
| 快捷键 | 模式切换结果 |
|---|---|
| i | 在光标前进入插入模式 |
| a | 在光标后进入插入模式 |
| I | 在行首(第一个非空白字符)进入插入模式 |
| A | 在行尾进入插入模式 |
| o | 在当前行下方插入新行并进入插入模式 |
| O | 在当前行上方插入新行并进入插入模式 |
| v | 进入字符可视模式 |
| V | 进入行可视模式 |
| Ctrl + v | 进入块可视模式 |
| : | 进入命令行模式 |
| ZZ | 保存并退出(等同于 :x) |
| ZQ | 不保存强制退出(等同于 :q!) |
2.插入模式下的快捷键:
插入模式下还有快捷键吗? kuku写就完事儿了, ESC返回普通模式😋。
3.命令行模式下的快捷键:
命令行模式下,文本查找和替换相关的快捷键,如下表所示:
| 快捷键 | 文本操作 |
|---|---|
| /pattern | 向前搜索 pattern |
| ?pattern | 向后搜索 pattern |
| n | 重复上次搜索(正向) |
| N | 重复上次搜索(反向) |
| :%s/old/new/g | 全局替换所有 old 为 new |
| :%s/old/new/gc | 全局替换所有 old 为 new,并每次确认 |
命令行模式下,文件操作相关的快捷键,如下表所示:
| 快捷键 | 对文件的影响 |
|---|---|
| :w | 保存文件 |
| :w filename | 另存文件为 filename |
| :wq | 保存并退出 |
| :x | 保存并退出(如果文件有修改则保存,否则直接退出) |
| :q | 退出(如果文件有未保存修改, 则会提示No write since last change) |
| :q! | 不保存并强制退出 |
| :e filename | 打开文件名为 filename 的新文件 |
| :e! | 重新加载当前文件(放弃当前的所有修改) |
| :set option | 设置 Vim 选项(如 :set nu 显示行号, :set nonu 取消行号) |
PS:可视模式下的快捷键:
可视模式是普通模式的一个"扩展",它可以让我们能够选择一块文本区域,然后对这块区域执行普通模式下的命令。
可视模式是从普通模式进入的,在普通模式通过 v (字符可视), V (行可视), Ctrl + v (块可视) 进入可视模式, 并且在可视模式中使用的光标移动键和最终执行的操作 (d, y,c 等) 都来源于普通模式。在可视模式下按 Esc 键返回普通模式。
在可视模式下, 仍然可以使用普通模式下的光标移动键 (h, j, k, l, w, b, 0, $, G, gg, Ctrl + f, Ctrl + b 等) 来扩展或缩小选择区域。
| 快捷键 | 对选中区域的操作 |
|---|---|
| d | 删除选中的文本 |
| y | 复制选中的文本 |
| c | 删除选中的文本并进入插入模式 |
| > | 向右缩进选中的文本 |
| < | 向左缩进选中的文本 |
| ~ | 切换选中文本的大小写 |
Δ总结
- 🆗,以上就是本篇博文的全部内容了,感谢阅读!
- 文章的重点是Linux vim的三种模式, 以及模式之间的切换。注意——插入模式是不能直接进入命令行模式的,必须先通过ESC回到普通模式(一般模式),再从普通模式输入 : 或者 / 进入命令行模式。
- 快捷键 up 这里就不演示了,工作量太大了这么搞😗。下一篇可能写一下Linux常用指令的汇总?也许。


5万+

被折叠的 条评论
为什么被折叠?



