# 写在前面
# 编辑器之神--vim
## vi
`Vi` 编辑器是所有 `Unix` 及 `Linux` 系统下标准的编辑器,类似于 `windows` 系统下的`notepad`(记事本)编辑器,由于在`Unix`及`Linux`系统的任何版本,`Vi`编辑器是完全相同的,因此可以在其他任何介绍vi的地方都能进一步了解它,`Vi`也是Linux中最基本的文本编辑器.
## vim模式的切换

可能图画的比较丑,我懂就好
## vim的模式
`vim`中大众认知的三种模式:
- 命令模式:在该模式下是不能对文件直接编辑,可以输入快捷键进行一些操作(删除行,复制行,移动光标,粘贴等等
- 编辑模式:在该模式下可以对文件的内容进行编辑;
- 末行模式:可以在末行输入命令来对文件进行操作(搜索、替换、保存、退出、撤销、高亮等等);
`vim`打开文件的方式:
- vim 文件路径 作用:打开指定文件
- vim +数字 文件路径 作用:打开文件并且将光标跳转到指定的行首
- vim +/关键词 文件路径 作用:打开文件并将光标跳转至第一个出现关键词的地方
- vim 文件路径1 文件路径2 文件路径3 作用:同时打开多个文件
### 命令模式
#### 光标移动
- 光标移动到行首
shift + 6(^)
- 光标移动到行尾
shift + 4($)
- 光标移动到首行
`gg`
- 光标移动到末行
`G`
- 翻屏
- 向上翻屏:按键 `ctrl + b` 或 `PgUp`
- 向上翻屏:按键 `ctrl + b` 或 `PgUp`
#### 复制操作
- 复制光标所在行
yy
- 以光标所在行为准(包含当前行),向下复制指定的行数
数字 yy
- 可视化复制
ctrl + v(可视块)或V(可视行)或v(可视),然后按下↑↓←→方向键来选中需要复制的区块,按下y键进行复制
- 粘贴
p
#### 剪切/删除
- 剪切/删除
dd 删除之后下一行上移
补充:严格意义上说是剪切命令,但是如果剪切了不粘贴就是删除的效果.
- 剪切/删除光标所在行为准(包含当前行),向下删除/剪切指定的行
数字 dd
- 剪切/删除光标所在的当前行之后的内容,但是删除之后下一行不上移
D(删除之后当前行会变成空白行)
- 可视化删除
`ctrl + v`(可视块)或 `V`(可视行)或 `v`(可视),上下左右移动,按下`D`表示删除选中行,`d`表示删选中块
#### 撤销/恢复
- 撤销
u
- 恢复:
`ctrl + r`恢复(取消)之前的撤销操作
#### 扩展
- 快速移动光标到指定的行
数字 G
- 以当前光标为准向上/向下移动n行
数字↑/数字↓
- 以当前光标为准向左/向右移动n字符
数字←/数字→
- 末行模式下的快速移动方式:移动到指定的行
输入行数数字
### 末行模式
#### 保存
- 输入:`:w` 保存文件
- 输入:`:w 路径` 另存为
#### 退出
:q
- 保存并退出
- `:wq`
- `:x` 建议使用,会自动判断文件是否被修改进而保存
#### 说明
- `:x`在文件没有修改的情况下,表示直接退出,在文件修改的情况下表示保存并退出;
- 如果文件没有被修改,但是使用`wq`进行退出的话,则文件的修改时间会被更新;但是如果文件没有被修改,使用`x`进行退出的话,则文件修改时间不会被更新的,会混淆用户对文件的修改时间的认定。
- 因此建议以后使用“:x”来进行对文件的保存退出。
- 但是:不要使用`X`,X表示对文件进行加密操作。
#### 强制执行
!
#### 调用外部命令
`:!外部命令`
#### 搜索
`/要查找的内容`
- `N/n`键切换上一个/下一个查找结果
#### 替换
- `:s`/搜索的关键词/新的内容 替换光标所在行的第一处符合条件的内容
- `:s`/搜索的关键词/新的内容/g 替换光标所在行的全部符合条件的内容
- `:%s`/搜索的关键词/新的内容 替换整个文档中每行第一个符合条件的内
- `:%s`/搜索的关键词/新的内容 替换整个文档中符合条件的内容
- `%`:表示整个文件
- `g`:表示全局
#### vim同时打开多个文件时切换文件
- 查看当前打开的文件名称:`files`

- `%a`表示当前打开的文件
- `#`表示上一个打开的文件
- `line`表示光标所在的行
- 切换文件
- 切换到指定文件`:open 已经打开的文件名称`
- `bn` 切换到下一个文件
- `bp` 切换到上一个文件
### 编辑模式
#### 进入方式
- i:在光标前插入字符
- a:在光标后插入字符
- o:在光标所在行的下面新启一行插入
- I:在光标所在行的行首插入,如果行首有空格则在空格后插入
- A:在光标所在行尾插入
- O:在光标所在行的上方新启一行插入
- S:删除光标所在行并插入
#### 退出方式
- ESC
## 扩展
### 代码着色
好像在Ubuntu里面是默认开启的

- 开启着色`syntax on`
- 关闭着色`syntax off`
### 显示行号(临时)
- 显示:set nu
- 取消显示:set nonu
### vim配置文件
配置文件路径 `/etc/vim/vimrc` 该文件需要使用`root`用户打开.
- 设置永久显示行号,颜色
- 修改全局配置文件`/etc/vim/vimrc`

- 修改个人配置文件`~/.vimrc`,如果没有可以自行新建
补充:
- 如果针对同一个配置项,个人配置文件中存在,则以个人配置文件为准,如果个人配置文件中不存在这一项,则以全局配置文件为准。
### 异常配置
异常退出指在退出文件前没有进行正常的保存退出操作.

解决方法:删除交互文件(在编辑过程中临时产生的文件)

### 别名机制
作用:相当于创建一些自己使用的命令
别名机制依靠一个别名映射文件`~/.bashrc`
- eg1:添加`cls`指令作为Linux终端的清屏指令

注意:需要重新登录当前操作用户指令才能生效
Linux学习记录(四)