vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
这里我就简单介绍一下,毕竟是给小白看的。
默认系统都会安装的有 vi 编辑器,但是操作挺麻烦的,所以推荐安装 vim ,它会自动替换默认的 vi ,你可以把 vim 当成 vi 的升级版。
Debian/Ubuntu 系统:
apt-get install -y vim
Centos系统:
yum install -y vim
vi的基本概念
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
- 命令行模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式也算入命令行模式。
为了习惯windows操作的小白,下面就只介绍插入模式。
首先用vi打开要编辑的文件,命令是vi 例子.XX,这时候是命令行模式,这种情况下可以通过各种命令修改文件。
然后按下“I”键就切换到了插入模式(这时候左下角会出现一个– INSERT –),这时候就可以输入文字了,用方向键可以控制光标的移动。
注意:这时候如果按下方向键等按键出现字母或者其他情况,那就请执行上面的升级VIM的步骤。还有就是不要用小键盘输入数字和符号!
这时候就可以更改文件了,鼠标右键可以粘贴(如果在命令行模式下右键粘贴,就自动切换到了插入模式)。如果要复制的话需要切换到命令行模式然后鼠标选中要复制的文本按下“Y”键复制。
如果过程中有输入错误的,也可以按下“U”键撤销,多次按键可以多次撤销!
更改完毕之后就按下“Esc”键退出插入模式,然后输入:wq来保存并退出VIM编辑器(:w是保存但不退出VIM编辑器,:q退出VIM编辑器但是不保存,:q!是强制退出VIM编辑器)。
真·小白教程2333333
进阶教程
最近为了媷羊毛《通过考试领取阿里云Hands-on Labs X Linux © 定制T恤,附答案》,更加详细的学习研究了下VIM,在这里做个总结。
使用命令 vim filename 后进入编辑器视图后,默认模式就是命令模式,此时敲击键盘字母会被识别为一个命令,例如在键盘上连续敲击两次d,就会删除光标所在行。以下是在命令模式中常用的快捷操作:
操作 | 快捷键 |
光标左移 | h |
光标右移 | l(小写L) |
光标上移 | k |
光标下移 | j |
光标移动到下一个单词 | w |
光标移动到上一个单词 | b |
移动游标到第n行 | nG |
移动游标到第一行 | gg |
移动游标到最后一行 | G |
快速回到上一次光标所在位置 | Ctrl+o |
删除当前字符 | x |
删除前一个字符 | X |
删除整行 | dd |
删除一个单词 | dw或daw |
删除至行尾 | d$或D |
删除至行首 | d^ |
删除到文档末尾 | dG |
删除至文档首部 | d1G |
删除n行 | ndd |
删除n个连续字符 | nx |
将光标所在位置字母变成大写或小写 | ~ |
复制游标所在的整行 | yy(3yy表示复制3行) |
粘贴至光标后(下) | p |
粘贴至光标前(上) | P |
剪切 | dd |
交换上下行 | ddp |
替换整行,即删除游标所在行并进入插入模式 | cc |
撤销一次或n次操作 | u{n} |
撤销当前行的所有修改 | U |
恢复撤销操作 | Ctrl+r |
整行将向右缩进 | >> |
整行将向左退回 | << |
若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开 | ZZ |
底部命令快捷键
在命令模式下按:键就进入了底线命令模式,在底线命令模式中可以输入单个或多个字符的命令。以下是底线命令模式中常用的快捷操作:
操作 | 命令 |
保存 | :w |
退出 | :q |
保存并退出 | :wq(:wq!表示强制保存退出) |
将文件另存为其他文件名 | :w new_filename |
显示行号 | :set nu |
取消行号 | :set nonu |
使本行内容居中 | :ce |
使本行文本靠右 | :ri |
使本行内容靠左 | :le |
向光标之下寻找一个名称为word的字符串 | :/word |
向光标之上寻找一个字符串名称为word的字符串 | :?word |
重复前一个搜寻的动作 | :n |
从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 | :1,$s/word1/word2/g或 :%s/word1/word2/g |
评论(0)