历史评价
- 编辑器之神
一个凡人的自我修养
- 成神是不可能成神的,只能是先入个门,然后一点一点学
Vim 官网
三种模式
插入模式(注意看光标)
命令模式(注意看光标)
编辑模式(注意看光标)
其实还有一种“可视 块”模式,按 Ctrl + v 实现
插入命令(从 编辑模式 进入 命令模式)
命令 | 释义 |
---|---|
a | 由粗光标所笼罩的字符后插入 |
A | 由粗光标所在行的行尾插入 |
i | (小写字母)由粗光标所笼罩的字符前插入 |
I | (大写字母)由粗光标所在行的行首插入 |
o | (小写字母)紧贴粗光标之下插入新行 |
O | (大写字母)紧贴粗光标之上插入新行 |
定位命令(在编辑模式“游走”)
命令 | 释义 |
---|---|
h | 同方向键“左” |
j | 同方向键“下” |
k | (小写)同方向键“上” |
l | (小写)同方向键“右” |
0 | (数字)将粗光标移至其所在行行首 |
$ | 将粗光标移至其所在行行尾 |
gg | 将粗光标移至当前文本的第一行行首 |
G | 将粗光标移至当前文本的最后一行行首 |
nG | 1 n 是虚指,实际用时由具体数字代替 2 将粗光标移至当前文本的第 n 行行首 |
:n | 1 n 是虚指,实际用时由具体数字代替 2 作用与 nG 相同,将粗光标移至当前文本的第 n 行行首 3 n 前的冒号会将模式切到命令模式,按回车键即可完成动作且能自动切回编辑模式 |
- 如果没有配置 Vim,但想显示行号,可以用以下命令显示或取消行号
命令 | 释义 |
---|---|
:set number | 设置行号 |
:set nu | 同上,设置行号 |
:set nonu | 取消行号 |
删除命令(在编辑模式下“扫荡”)
命令 | 释义 |
---|---|
x | (小写)删除粗光标所笼罩的字符 |
nx | 1 n 是虚指,实际用时由具体数字代替 2 从粗光标所笼罩的字符开始往后删,共删 n 个 |
D | 对粗光标所在行而言,删除粗光标所笼罩处及其后所有内容 |
dd | 删除粗光标所在行 |
ndd | 1 n 是虚指,实际用时由具体数字代替 2 从粗光标所在行开始往下删,共删 n 行 |
:n1,n2d | 1 n1,n2 是虚指,实际用时由 2 个具体数字代替 2 删除指定的相连的多行 |
后悔药 与 逆后悔药
药名 | 键位 | 释义 |
---|---|---|
后悔药 | u | (小写)撤销 |
逆后悔药 | Ctrl + r | (先按住 Ctrl 再按 r)恢复撤销 |
复制 与 粘贴
命令 | 释义 |
---|---|
yy | 复制当前行 |
nyy | 从当前行开始往下数,共 n 行,复制下来 |
p | (小写)紧贴粗光标所在行之下粘贴 |
P | (大写)紧贴粗光标所在行之上粘贴 |
替换
命令 | 释义 |
---|---|
r | 取代粗光标所笼罩的字符 |
R | 从粗光标所笼罩的字符开始,往后替换字符,按 ESC 结束 |
搜索 与 搜索替换(命令模式就是有一种大局观)
命令 | 释义 |
---|---|
/String | 1 String 是虚指,实际用时由具体字符串代替 2 若要搜索时忽略大小写,添加命令 :set ic 3 搜索出多个,按 n 跳至下一处 |
:s/old/new | 1 old 和 new 是虚指,实际用时由具体字符串代替 2 将粗光标所在行第一个 old 替换成 new |
:s/old/new/g | 1 old 和 new 同上 2 将粗光标所在行所有的 old 替换成 new |
:%s/old/new/g | 1 old 和 new 同上 2 将当前文本所有的 old 替换成 new |
:n1,n2s/old/new/g | 1 n1, n2 是虚指,实际用时由具体数字代替,old 和 new 同上 2 将当前文本的第 n1 行到 n2 行的 old 替换成 new |
:n1,n2s/old/new/gc (埋下伏笔,日后补充) |
1 在上一条基础上,每替换一个都要确认 2 有命令 y/n/a/q/l 分别代表 确认/跳过/之后的全部/取消/换一个就结束 |
保存 与 退出
命令 | 释义 |
---|---|
:w | (小写,下同)保存 |
:w new_file_name | 1 new_file_name 是虚指,实际用时由具体文件名代替 2 此步为另存为指定文件 |
:wq | 保存并退出 |
ZZ | (大写)快捷键,功能同上,保存并退出 |
:q! | 不保存退出 |
:wq! | (文件所有者 或 root 专属)(强行)保存并退出 |
一些补充
命令 | 释义 |
---|---|
:r! 命令 | 1 “命令”是虚指,实际用时由具体命令名代替 2 导入该命令执行结果 |
:n1,n2s/^/#/g | ^ 表示行首,多行行首加 # |
:n1,n2s/^#//g | 与上面比,g 前多一个 /,多行行首去 # |
:n1,n2s/^/\/\/g | 多行行首加 // (埋下伏笔,日后补充) |
:map 快捷键 触发命令 | 埋下伏笔,日后补充 |
致谢
- 几年前的某个暑假,邂逅“兄弟连”的“Linux 公开课”
- 虽然不是计算机专业,我当时还是听了课,做了笔记。这几天翻出了当时的笔记,整理了这篇随笔
- 在此感谢“兄弟连”的李明老师和沈超老师
- 暂时没找到当时的课程,先附上官网:“兄弟连”官网