[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)