1077 字
3 分钟
Vim Docs
Vim Docs
Unix-style 系统中,shell 的光标默认是色块,而不是 Windows 中的
|。因此讨论光标位置时,要严格区分光标前、光标所在位置与光标后。
命令模式
从命令模式切换到底线命令模式, :
常规输入
| 命令 | 作用 |
|---|---|
i | 切换到输入模式,从当前光标位置开始输入 |
a | 切换到输入模式,从光标位置后一位开始输入 |
o | 当前行下方插入新行,并进入输入模式 |
O | 在当前行上方插入新行,并进入输入模式 |
v | 切换到选择模式,类似于鼠标框选文本 |
光标移动
以下命令输入后,按 Enter 触发
| 命令 | 作用 |
|---|---|
<num> + ↑↓←→ | 光标向上/下/左/右移动 num 位,例如 30↑ 。左右移动时不会超过行首/行尾。 |
ctrl + u/d | 屏幕向上/下移动半页 |
<num> + Space | 光标向后移动 num 位(可换行) |
0/$ | 光标移动到行首/行尾( Home/End 也行 ) |
G | 光标移动到文件最后一行 |
gg | 光标移动到文件第一行 |
<num> + G | 光标移动到 num 行 |
<num> + Enter | 光标向下移动 num 行 |
查找替换
| 命令 | 作用 |
|---|---|
/word | 向光标后寻找 word 字符串 |
?word | 向光标前寻找 word 字符串 |
n | 重复前一个查找动作(等价于查找下一个/上一个) |
N | 反向进行前一个查找动作(向前变向后,向后变向前) |
:<num1>,<num2>s/word1/word2/g | 在 num1 行到 num2 行之间搜索字符串 word1 ,将其替换为 word2 |
:<num1>,<num2>s/word1/word2/gc | 跟上面效果一样,但是替换时会请求确认 (confirm) |
:%s/word1/word2/g | 在所有行进行上述操作 |
:%s/word1/word2/gc | 同理 |
批量操作
| 命令 | 作用 |
|---|---|
x | 删除光标所在处的字符(后面的会自动向前缩进) |
X | 删除光标前一个字符 |
<num>x | 从光标所在处开始, 向后删除 num 个字符 |
dd | 剪切当前行 (带换行符) |
<num>dd | 从光标所在行开始, 向下剪切 num 行 |
d0 | 剪切光标前一位到行首 |
d$ | 剪切光标所在处到行尾 (不带换行符) |
d<num>G | 从光标所在行开始, 剪切到 num 行 |
yy | 复制当前行 |
<num>yy | 复制光标所在的向下 num 行 |
y0 | 复制光标前一位到行首 |
y$ | 复制光标所在处到行尾 (不带换行符) |
y<num>G | 从光标所在行开始, 复制到 num 行 |
小写 p | 粘贴到光标后(若带有换行符, 则粘贴到下一行) |
大写 P | 粘贴到光标前(若带有换行符, 则粘贴到上一行) |
J | 将光标下一行合并到光标所在行, 用空格隔开 |
u | 撤销上一次操作 |
ctrl + r | 重做被撤销的操作 |
小数点 . | 重复上一个操作 |
"+y | 双引号 + 加号 + y,将 visual 模式中的内容复制到系统剪切板(不是 vim 的默认缓冲区) |
"+p | 将系统剪切板中的内容粘贴到 vim |
> / < | 向前或向后缩进光标选中的文本d |
底线命令
从底线命令模式切换到命令模式, ESC
| 命令 | 作用 |
|---|---|
:w | 保存文件 |
:wq | 保存文件,并退出 Vim 编辑器 |
:q | 退出 Vim 编辑器 |
:q! | 强制退出 Vim 编辑器,不保存修改 |
:w <file_name> | 将编辑的数据另存为新文件 |
:r <file_name> | 在编辑的数据中,读入另一个文件(即将新文件内容添加到光标后) |
:<num1>,<num2> w <file_name> | 将 num1 到 num2 行的内容另存为新文件 |
! <command> | 暂且离开 vi/vim 环境,执行 command 并显示结果 |
输入模式
| 按键 | 作用 |
|---|---|
Enter | 换行 |
Backspace | 删除光标前字符 |
Del | 删除光标后字符 |
Home/End | 光标移动到行首/行尾 |
Page Up/Down | 上/下翻页 |
配置文件
vim 的配置文件位于 ~/.vimrc。配置文件中的 set 指令可以在 vim 窗口中通过 : 底线命令模式直接执行,当然也就只会在当前窗口中生效。写入配置文件时则会在每次编辑前默认加载。
字符集
set encoding=utf-8缩进
set autoindent expandtab tabstop=2 shiftwidth=2- autoindent:换行时自动缩进
- expandtab:按下 Tab 键时插入空格而不是制表符
- tabstop=2:设置 tab 键的宽度为 2 个空格
- shiftwidth:使用 << 和 >> 命令缩进或移动文本时的宽度为 2 个空格
行号
# 显示行号set nu# 取消显示行号set nonu 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐









