[TOC]
>[success] # vi/vim
1. 在Linux下一般使用**vi编辑器来编辑文件**,vi既可以**查看文件也可以编辑文件**,因此可以理解成.'**windows平台**'的文本编辑器'**记事本**'
2. **vim是vi的升级版本**,具备更多的功能
3. vi如果目标文件不存在,会创建新的文件。但是如果新文件没做编辑,退出后还会消失
>[danger] ##### vi/vim -- 工作模式
~~~
1.linux 的操作形式导致了 'vi/vim'不能像我们使用'windows'笔记本那样简单的图形化随意操作,需要使用配合各种指令
使用习惯上也是分为三种模式
1.1.'命令模式':进入vim默认的模式,esc 进入
1.2.'编辑模式':按i进入的'a/i/o'也可以进入
1.3.'底行(末行)模式':按下":"(冒号)之后进入到的模式
2.如图可以看出使用模型为
2.1.通过'vi/vim' 进入文件或者创建文件,此时进入文件为'不可编辑形式'
2.2.此时想编辑文本即进入'编辑模式' 需要输入'a/i/o' 此时可以进入对应的编辑模式
2.3.当想进入保存或者退出文件编辑等操作使用需要通过输入":" 进入末行模式
注意:无论是进入末行模式 还是 编辑模式 都需要通过命令模式进入,也就是 '命令和末行相互切换',
'命令和编辑模式相互切换',但是'末行和编辑无法进行相互切换'
~~~
| 模式名 | 含义 |
| --- | --- |
| 命令模式 | 等待输入的模式 |
| 输入模式 | 编辑模式,用于输入文本 |
| 底行(尾行、末行)模式 | 可以输入指令,搜索,保存 |
![](https://img.kancloud.cn/a9/21/a921e1fcd727dc1553fa4ef5eaf431ee_1084x537.png)
![](https://img.kancloud.cn/06/f3/06f306f86e1da7f26b1d9bc30341f2e4_1011x569.png)
>[danger] ##### 初次使用
1. 进入vi之后,是处于「**命令行模式(command mode)**」,您要切换到「**插入模式(Insert mode)**」才能够输入文字
2. 「**插入模式(Insert mode)**」,只能一直输入文字,如果您发现输错了字,想用光标键往回移动,将该字删除,就要先按一下「**ESC**」键转到「**命令行模式(command mode)**」再**删除文字**
3. 退出vi及保存文件,在「**命令行模式(command mode)**」下,按一下 **:** 冒号键进入
>[danger] ##### vi/vim 使用
~~~
'注' : 当'vim/vi' 打开不存在的文件的时候,默认会创建文件
1.'vim/vi 文件名' -- 打开或创建文件
2.'a/i/o' 进入编辑模式
2.1.i -- '进入插入模式在光标的当前位置'
2.2.I -- '进去插入模式并且光标到当前行开头'
2.3.a -- '进去插入模式并且光标到当前光标的下一位'
2.4.A -- '进去插入模式并且光标到当前行的末尾'
2.5.o -- '进去插入模式并且光标到当前光标的下一行产生空行'
2.6.O -- '进入插入模式并且光标到当前行的上一行产生空行'
3.写完代码之后,按下esc,退出编辑模式
4.输入冒号,进入底线命令格式,输入
4.1.':wq!' -- 强制写入文件内容且退出vim/vi, write-写 quit-退出 !-强制性的
4.2.":q!" -- 不保存强制退出
~~~
* 插入
| 命令 | 含义 |
| --- | --- |
| i | 在当前位置插入 |
| a | 在当前光标右边插入 |
| A | 在当前光标右的行末插入文件 |
| o | 在光标所在行的下方插入一行并切换到输入模式 |
| O | 在光标所在行的上方插入一行并切换到输入模式 |
| s | 删除当前光标位置并插入 |
* 底行模式
| 命令 | 含义 |
| --- | --- |
| :w | 把写入保存到硬盘中 |
| :q | 退出当前VI编辑器打开的文件 |
| :wq! | 强制保存 |
| :s/old/new | 把光标所在行的old替换成new |
| :s/old/new/g | 把所有行的old替换成new |
>[danger] ##### 想给文本显示行号标记
~~~
1.显示行':set nu'
2.取消':set nonu'
~~~
>[danger] ##### 移动光标
~~~
1.有些电脑键盘没有上下左右键因此在命令模式移动光标
1.1.h -- 左
1.2.l -- 右
1.3.j -- 下
1.4.k -- 上
2.'G' -- 移动光标到文档尾行
3.'gg' -- 移动标到文档第一行
4.'G+数字' -- 可以移动光标到指定行,例如移动到11行 '11G',可以直接(':+数字')
5.'^' -- 移动光标到这一行的开头 (数字0 也有一样的效果)
6.'$' -- 移动光标到这一行的结尾
7.'H' -- 移动光标到屏幕首行注意是屏幕所能展示的文章首行
8.'M' -- 移动到光标到屏幕的中间一行
9.'L' -- 移动光标到屏幕的尾行
10.'w(e)' -- 移动光标到下一个单词
11.'b' -- 移动到光标上一个单词
~~~
| 命令 | 含义 |
| --- | --- |
| h | 光标左移 |
| j | 光标下移 |
| k | 光标上移 |
| l | 光标右移 |
>[danger] ##### 分页
~~~
1.'ctr1+f' -- 下一页
2.'ctrl + b' -- 上一页
~~~
| 命令 | 含义 |
| --- | --- |
| ctrl+f | 向下翻页 |
| ctrl+b | 向上翻页 |
| ctrl+d | 向下翻半页 |
| ctrl+u | 向上翻半页 |
| 0 | 移到文章的开头 |
| G | 移动到文章的最后 |
| $ | 移动到光标所在行的"行尾" |
| ^ | 移动到光标所在行的"行首" |
| w | 光标跳到下个字的开头 |
| e | 光标跳到下个字的字尾 |
| b | 光标回到上个字的开头 |
| #l | 光标移到该行的第#个位置,如:5l,56l |
>[danger] ##### 搜索(查找)文字
| 命令 | 含义 |
| --- | --- |
| / | 输入/可以在当前的文件中查找该字符串 |
| n | 查找下一个 |:
| Shift-N | 查找上一个 |
~~~
1.'/' 查找顺序向下查找字符串 ,举个例子想查找文本中'我'这个字,输入'/我' 然后回车,使用'n'进行跳转下一个字符串
2.'?' 查找顺序向上查找字符串,其他同理
// ----------------上面查找的是任意字符串,下面的只能针对单词------------------
3.'*' -- 查找整个文档,匹配'光标'所在的所有'单词',按下n查找下一处,N上一处
4.'#' -- 查找整个文档,匹配'光标'所在的所有'单词',按下n查找下一处,N上一处
5.'%' -- 找到括号的另一半
~~~
>[danger] ##### 复制、删除、粘贴、更改
| 命令 | 含义 |
| --- | --- |
| dd | 删除光标所在行 |
| y | 进入块模式后可以复制选中内容 |
| yw | 复制单词 |
| yy | 复制光标所在的行 |
| p | 在光标所在行的下方粘贴 |
| P | 在光标所在行的上方粘贴 |
|x|删除当前字符|
* 复制
~~~
1.'yy' -- 拷贝光标所在行内容
2.复制多行 'yy行数' 例如 复制3行'yy3'(当前行往下三行,包括当前行)
3.'y$' 复制当前光标位置到这一行的结尾字符
4.'#yy' -- 例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
~~~
* 粘贴
~~~
1.'p' -- 粘贴复制内容
2.'数字+p' -- 将复制内容粘贴几遍,例如'2p' 将复制内容粘贴两次
~~~
* 剪切(等同删除)
~~~
注:如何配合'p' 则是剪切功能,如果只是单纯使用下面指令'删除'
1.'dd' -- 删除光标所在'行',如果在使用'p' 怎将内容粘贴出来(5dd删除光标所在5行)
2.'d$' -- 删除从当前'光标'到'这一行的结尾' (等同'D') ,同理配合'p'
3.'#dd' -- 从光标所在行开始删除#行
4.'dG' -- 删除当前行到文档尾部的内容,同理配合'p'
5.'x' -- 向后删除字符,同理配合'p'
6.'X' -- 向前删除字符,同理配合'p'
7.'#x' -- 例如,「6x」表示删除光标所在位置的"后面"6个字符。
8.'#X' -- 例如,「20X」表示删除光标所在位置的"前面"20个字符
~~~
* 更改
~~~
1. 'cw' -- 将光标所在处的字到字尾处字删掉并且进入编辑模式
2. 'c#w' -- 例如,「c3w」表示更改3个字,删掉并且进入编辑模式
~~~
>[danger] ##### 撤销 和 重做
| 命令 | 含义 |
| --- | --- |
| u | 撤消最后执行的一次命令 |
~~~
1.'u' -- 撤销上一步操作
2.'ctrl +r'相当于 'win的ctrl+y'
~~~
>[danger] ##### 替换指定字符
~~~
1.r+新字符 -- 字符替换,光标选中按r 在输入新字符
~~~
| 命令 | 含义 |
| --- | --- |
| r | 替换当前位置字符 |
>[danger] ##### 批量操作(选取功能)
~~~
在正常模式下摁:
1.v -- 字符可视模式
2.V -- 行可视模式
3.ctrl+v -- 块可视模式
配合插入可以分配插入或者配合删除剪切这样进行批量操作
举例子配合'd' 就可以批量删除,配合'I' 就可以批量掺入文字
~~~
>[info] ## 快捷操作
~~~
1.删除光标所在位置到行尾的内容并进入编辑模式C(大写字母)
2.快速保存并退出ZZ
~~~
>[info] ## swp 文件
[链接](https://blog.csdn.net/qq_42200183/article/details/81531422)
>[info] ## 键位图
![](https://img.kancloud.cn/cf/f0/cff0b08ddde34d0bf99087e6c20c53cc_879x623.png)
- 安装-VMware 虚拟机
- 远程连接
- Windows -- wsl
- Linux -- 认识 Linux 和操作系统
- Linux -- Linux 和 windows 对比
- Linux -- 命令提示符
- Linux -- 文件目录
- Linux -- 文件类型
- Linux -- 绝对和相对路径
- Linux -- 常用快捷键
- Linux -- 三种帮助命令
- 帮助命令 -- man
- 帮助命令 -- help
- 帮助命令 -- info
- Linux -- 指令
- alias -- 设置别名
- history -- 查看历史命令
- cd -- 更改目录(切换文件夹)
- pwd -- 打印目录
- ls -- 列出文件内容
- mkdir -- 创建文件夹
- rmdir -- 删除一个空的目录
- touch -- 创建普通文件/修改时间
- cp -- 复制粘贴
- mv -- 移动和重名
- rm -- 删除
- cat/tac -- 查看纯文本文件
- more/less -- 分页读取信息
- head -- 从文本开头查看
- tail -- 从文本结尾查看
- cut -- 提取片段
- sort -- 排序
- uniq -- 去重
- wc -- 统计文件的行数、单词、字节数
- tr -- 替换、缩减或删除字符
- find -- 文件查找
- grep -- 文件当中匹配字符
- 管道 -- |
- locate -- 第三方文件查找
- whereis -- 查找二进制/源代码文件 路径
- which -- 查找环境变量
- 压缩和解压
- ln -- 链接
- wget -- 下载指定的url资源
- 重定向 -- << /< />/> >
- 逻辑控制 -- &&
- echo -- 输出指定内容
- date/cal -- 查看日期和日历
- Linux -- 进程管理
- Linux-- ps 指令
- vi/vim - 文本编辑器
- 更多
- Linux-- 开关机命令
- Liunx -- 退出登录
- Linux-- 查看登录用户信息
- Linux -- 环境变量
- Linux -- 用户
- Linux -- 文件管理
- 文件权限设置 -- chmod
- 更改文件的拥有者 -- chown
- 默认权限 -- umask
- Linux -- 用户
- 新建/删除用户 -- useradd/userdel
- 修改用户属性 -- usermod/chage
- 新建/删除用户组 -- groupadd/groupdel
- 用户切换 -- su/sudo
- 用户/用户组的配置文件
- 用户家目录被删除解决
- last、 lastlog命令查看用户详细的登录信息
- Linux -- shell
- Linux -- 管道符号
- shell -- 执行
- shell -- 变量
- shell -- 字符串
- shell -- 数组
- Shell -- declare 设置变量属性
- shell -- 数学计算
- shell -- 变量作用域
- shell -- 位置参数变量
- shell -- read
- shell - if 语句
- shell -- test
- shell -- case
- Linux -- 循环
- Linux -- 软件包管理