2025-08-08 16:50:16 +08:00

205 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Vim
date: 2023-09-21 15:00:20
tags:
---
# Vim 的工作模式
vim 有6种工作模式。
- 普通模式:使用 vim 打开一个文件时默认模式。也叫命令模式,运行用户通过各种命令浏览代码、滚屏等操作。
- 插入模式也可以叫做编辑模式在普通模式下敲击i、a 或 o 就进入插入模式,允许用户通过键盘输入、编辑。
- 命令行模式:在普通模式下,先输入冒号`:`,接着输入命令 ,就可以通过配置命令对 vim 进行配置了,如改变颜色主题、显示行号等,这些配置命令也可以保存到/etc/vim/vimrc配置文件中每次打开默认配置执行。
- 可视化模式:在普通模式下敲击键盘上的 v 键,就进入可视化模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。
- 替换模式:如果我们想修改某个字符,不需要先进入插入模式,删除,然后再输入新的字符,直接在普通模式下,敲击`R`键就可以直接替换。
- EX模式类似于命令行模式可以一次运行多个命令。
vim 的各种工作模式可以通过不同的键进行切换,用户统一使用`ESC`键返回到普通模式。
## 命令模式
**用户刚刚启动vim便进入里命令模式**
此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下`i`,并不会输入一个字符,`i`被当作了一个命令。
以下是普通模式常用的几个命令:
- `i` -- 切换到输入模式,在光标当前位置开始输入文本。
- `x` -- 删除当前光标所在处的字符。
- `:` -- 切换到底线命令模式,以在最底一行输入命令。
- `a` -- 进入插入模式,在光标下一个位置开始输入文本。
- `o` -- 在当前行的下方插入一个新行,并进入插入模式。
- `O` -- 在当前行的上方插入一个新行,并进入插入模式。
- `dd` -- 删除当前行。
- `yy` -- 复制当前行。
- `p`(小写)-- 粘贴剪贴板内容到光标下方。
- `P`(大写)-- 粘贴剪贴板内容到光标上方。
- `u` -- 撤销上一次操作。
- `Ctrl + r` -- 重做上一次撤销的操作。
- `:w` -- 保存文件。
- `:q` -- 退出 Vim 编辑器
- `:q!` -- 强制退出 Vim 编辑器,不保存修改。
若要编辑文本,只需要启动 Vim进入了命令模式按下`i`切换到输入模式即可。
命令模式只有一些最基本的命令,因此仍要依靠**底线命令行模式**输入更多命令。
## 输入模式
在命令模式下按下`i`就进入了输入模式,使用`Esc`键可以返回到普通模式。
在输入模式中,可以使用以下按键:
- **字符按键以及Shifi组合**,输入字符
- **ENTER**,回车键,换行
- **BACK SPACE**,退格键,删除光标前一个字符
- **DEL**,删除键,删除光标后一个字符
- **方向键**,在文本中移动光标
- **HOME/END**,移动光标到行首/行尾
- **Page Up/Page Down**,上/下翻页
- **Insert**,切换光标输入为输入\替换模式,光标将变成竖线/下划线
- **ESC**,退出输入模式,切换到命令模式
## 底线命令模式
在命令模式下按下`:`(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- :w 保存文件
- :q 退出 Vim 编辑器
- :wq 保存文件并退出 Vim 编辑器
- :q! 强制退出 Vim 编辑器,不保存修改
- :set nu 开启行号
- :set nonu 关闭行号
`ESC`键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
![img](https://www.runoob.com/wp-content/uploads/2014/07/vim-vi-workmodel.png)
# Vim 的按键说明
## 第一部分:命令模式可用的光标移动、复制粘贴、搜索替换等
<center>
<table>
<thead>
<tr>
<th colspan="2">移动光标的方法</th>
</tr>
</thead>
<tbody>
<tr>
<td>h 或 向左箭头键(←)</td>
<td>光标向左移动一个字符</td>
</tr>
<tr>
<td>j 或 向下箭头键(↓)</td>
<td>光标向下移动一个字符</td>
</tr>
<tr>
<td>k 或 向上箭头键(↑)</td>
<td>光标向上移动一个字符</td>
</tr>
<tr>
<td>l 或 向右箭头键(→)</td>
<td>光标向右移动一个字符</td>
</tr>
<tr>
<td colspan="2">如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!</td>
</tr>
<tr>
<td>Ctrl + f</td>
<td>屏幕『向下』移动一页,相当于 Page Down 按键 (常用)</td>
</tr>
<tr>
<td>Ctrl + b</td>
<td>屏幕『向上』移动一页,相当于 Page Up 按键 (常用)</td>
</tr>
<tr>
<td>Ctrl + d</td>
<td>屏幕『向下』移动半页</td>
</tr>
<tr>
<td>Ctrl + u</td>
<td>屏幕『向上』移动半页</td>
</tr>
<tr>
<td>+</td>
<td>光标移动到非空格符的下一行</td>
</tr>
<tr>
<td>-</td>
<td>光标移动到非空格符的上一行</td>
</tr>
<tr>
<td>n『空格』</td>
<td>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20『空格』 则光标会向后面移动 20 个字符距离。</td>
</tr>
<tr>
<td>0 或功能键[Home]</td>
<td>这是数字『 0 』:移动到这一行的最前面字符处 (常用)</td>
</tr>
<tr>
<td>$ 或功能键[End]</td>
<td>移动到这一行的最后面字符处(常用)</td>
</tr>
<tr>
<td>H</td>
<td>光标移动到这个屏幕的最上方那一行的第一个字符</td>
</tr>
<tr>
<td>M</td>
<td>光标移动到这个屏幕的中央那一行的第一个字符</td>
</tr>
<tr>
<td>L</td>
<td>光标移动到这个屏幕的最下方那一行的第一个字符</td>
</tr>
<tr>
<td>G</td>
<td>移动到这个档案的最后一行(常用)</td>
</tr>
<tr>
<td>nG</td>
<td>n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)</td>
</tr>
<tr>
<td>gg</td>
<td>移动到这个档案的第一行,相当于 1G 啊! (常用)</td>
</tr>
<tr>
<td>n『 Enter 』</td>
<td>n 为数字。光标向下移动 n 行(常用)</td>
</tr>
</tbody>
<thead>
<tr>
<th colspan="2">搜索替换</th>
</tr>
</thead>
</table>
</center>
# Vim配置文件
## 当前用户配置文件(~/.vimrc
若在当前用户目录下没有`.vimrc`,则手动新建即可
```bash
vim ~/.vimrc
```
其中可添加如命令模式中的命令,比如`set nu`之后再打开vim则默认开启行号
```
set nu
```
`:wq`保存退出后,需使用`source ~/.vimrc`使改动生效