写在前面:作为常年与服务器、Linux打交道的后端开发RD,基本的vi操作是一定要运用非常熟练的;本篇文章就记录了一些日常工作中最常用的的指令,希望能和大家共同学习共同进步~
一、vi与vim的区别
vim是vi的升级版本,它兼容vi的所有指令,并提供一些新特性,如以不同颜色标识语法等;(之后会总结一些vim的常用功能~)
二、vi的三种模式
模式 | 功能 |
---|---|
一般模式 | 通过vi打开文件后的默认模式,在此模式下可以方便地移动光标,执行复制、剪切、删除、粘贴等操作; |
编辑模式 | 在一般模式按下【i、I、o、O、a、A、r、R】等字符即可进入编辑模式(最常使用【i】在光标处开始编辑、【o】在光标下一行插入新行,并跳转至新行开始编辑),编辑模式下可以编辑文件,按下【ESC】可退出到一般模式; |
命令行模式 | 在一般模式按下【:、/、?】字符即可进入命令行模式,命令行模式下可以保存修改、离开vi、查找字符、替换字符,按下【ESC】可退出到一般模式; |
三、最常用指令
1、移动指令
指令 | 功能 | 简介 | 编者按 |
---|---|---|---|
k/j/h/l | 上下左右移动光标 | 一般模式下,可以使用【k/j/h/l】代替方向键上下左右移动光标,多次相同移动指令可使用数字+指令执行,如【30j】即代表向下移动光标30次; | 刚开始使用这四个键会很难记、很不适应,但习惯后的确会更方便、更极致; |
Ctrl+f | 向下翻页 | 一般模式下,可以使用组合键【Ctrl+f】向下翻页; | 适用于vi浏览多页数据 |
Ctrl+b | 向上翻页 | 一般模式下,可以使用组合键【Ctrl+b】向上翻页; | 适用于vi浏览多页数据 |
0 | 移动光标到行首 | 一般模式下,可以使用数字【0】移动光标到行首; | 非常常用; |
$ | 移动光标到行尾 | 一般模式下,可以使用符号【$】移动光标到行尾; | 非常常用; |
G | 移动光标到文件最后一行 | 一般模式下,可以使用大写字母【G】移动光标到文件最后一行,【nG】代表移动光标到文件的第n行; | 非常常用,比如直接跳到日志文件末尾查看最新的日志; |
gg | 移动光标到文件第一行 | 一般模式下,可以使用【gg】移动到文件第一行; | 非常常用; |
2、查找替换指令
指令 | 功能 | 简介 | 编者按 |
---|---|---|---|
/关键字 | 从光标位置向下查找关键字 | 一般模式下,可以通过符号【/】进入命令行模式,再键入要查找的关键字,按下【回车】即可自动将光标移动到向下第一个关键字处;结合【n】沿之前方向继续查找(此处为继续向下)、【N】沿之前反向继续查找(此处为继续向上); | 非常常用,比如通过关键字查找日志; |
?关键字 | 从光标位置向上查找关键字 | 一般模式下,可以通过符号【?】进入命令行模式,再键入要查找的关键字,按下【回车】即可自动将光标移动到向上第一个关键字处;结合【n】沿之前方向继续查找(此处为继续向上)、【N】沿之前反向继续查找(此处为继续向下); | 无 |
:1,$s/word1/word2/gc | 从第一行到最后一行查找word1并替换为word2,并在替换前提示用户确认 | 一般模式下,可以通过符号【:】进入命令行模式,再键入【1,$】代表从第一行到最后一行,$也可以用具体的行号代替,最后的参数【c】代表替换前提示用户确认; | 一般来说,除非确认要全局替换的情况,还是推荐加上参数【c】确保替换无误; |
3、剪切、删除、复制、粘贴指令
指令 | 功能 | 简介 | 编者按 |
---|---|---|---|
x | 删除(剪切)光标位置处的字符 | 在一般模式下,可以使用小写字母【x】代替【Del】删除(剪切)光标位置的字符; | 非常常用,较使用【Del】更方便;在vi指令中,删除一般都可以做为剪切使用; |
dd | 删除(剪切)光标所在行 | 在一般模式下,可以使用【dd】删除(剪切)光标所在行操作;可使用【ndd】删除连续的n行; | 非常常用; |
yy | 复制光标所在行 | 在一般模式下,可以使用【yy】复制光标所在行;可使用【nyy】复制连续的n行; | 非常常用; |
p | 将已复制的数据粘贴在光标下一行 | 在一般模式下,可以使用【p】将已复制的数据粘贴在光标下一行; | 非常常用; |
4、重复操作与撤销操作指令
指令 | 功能 | 简介 | 编者按 |
---|---|---|---|
u | 撤销前一个操作 | 在一般模式下,可使用【u】撤销之前的操作 | 非常常用; |
Ctrl+r | 恢复前一个被撤销的操作 | 在一般模式下,可以使用【Ctrl+r】恢复【u】撤销的操作 | 【u】的反向操作; |
. | 重复之前的操作 | 在一般模式下,使用符号【.】可以方便地重复之前的删除、粘贴操作 | 非常常用; |
5、命令行模式常用指令
指令 | 功能 |
---|---|
:w | 保存文件 |
:q | 退出文件 |
:wq | 保存并退出文件 |
:q! | 强制退出,不保存 |
:set nu | 设置行号 |
:set nonu | 取消设置行号 |
:数字 | 移动光标到第n行 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。