写在前面
在命令行工具中打开并修改一个文件或者是在 git 操作时需要美化历史记录的时候就不得不和 vim 编辑器打交道。现在的操作系统基本都自带 vim 编辑器。借用维基百科上的一说话:对于大多数用户来说,Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。
因为日常会用到它,如果不仔细了解一遍它,会感觉到非常痛苦,就像正则表达式一样,一些奇奇怪怪的符号代表一些奇怪的含义,连 ctrl + c中断操作都不能退出 vim。因此就来学习一下 vim。
看了一遍 Vim简介 和 入门教程,加上跟着实际操作,基本都了解了,只是有些特殊的符号对应特殊的意义需要单独记下来。这里记录常用的操作命令。
以下命令都是在英文输入法模式下,当按键不管用的时候,请看看是不是输入法不对!!!
普通模式按 i 进入插入模式,插入模式按 Esc 回到普通模式,普通模式按 (:命令) 进入命令行模式。插入模式和命令行模式之间没有直接联系,必须都回到普通模式进行切换。
1. 普通模式
普通模式就是 Vim 启动后自动进入的模式,在该模式下可以 移动光标 搜索与替换 复制与粘贴 删除 。
移动光标
- 上⬆下⬇左⬅右➡箭头移动光标
- 上下左右箭头前输入数字(n↑),为向哪移动多少个字符
0(/home)移动到这一行的最前面,$(/end)移动到这一行的最后面gg移动到这个档案的第一行,G移动到这个档案的最后一行n<Enter>向下移动 n 行
搜索与替换
搜索
/word向下搜索,?word向上搜索n为重复向下搜索,N为重复向上搜索。(需要输入 /word 回车后再按)
替换
:n1,n2s/word/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2。:n1,n2s/word/word2/gc,加一个 c 表示在取代前显示提示字符给用户确认 (confirm) 是否需要取代!$表示最后。例如:1,$s/word/word2/g表示从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !
复制与粘贴
复制
- 复制光标所在的一行
yy - 复制光标所在的向下 n 行
nyy - 复制光标所在行到最后一行
yG - 复制光标所在行到第一行
y1G - 复制光标所在位置直到行尾的所有字符
y$ - 复制光标所在位置直到行首的所有字符
y0
粘贴
- 将数据粘贴在光标所在行的下一行
p - 将数据粘贴在光标所在行的上一行
P
删除
- 删除光标所在的一行
dd - 删除光标所在的向下 n 行
ndd - 删除光标所在行到最后一行
dG - 删除光标所在行到第一行
d1G - 删除光标所在位置直到行尾的所有字符
d$ - 删除光标所在位置直到行首的所有字符
d0 - 删除光标向前一个字符(相当于backspace)
X - 删除光标向后一个字符(相当于 del)
x - 删除光标前后 n 个字符
nX或nx
撤销与重做
- 撤销上一个动作
u - 重做上一个动作
ctrl + r - 重复上一个动作
.
2. 插入模式
普通模式进入插入模式 i
插入模式退出到普通模式 Esc
a,o,r 都会进入插入模式
3. 命令行模式
普通模式进入命令行模式,都需要以 : 开头。
- 保存
:w - 保存并离开
:wq - 离开,不保存会有警告
:q - 强制离开
:q!
3. 其他
- 显示行号
:set nu - 取消显示行号
:set nonu
