vi编辑器是Linux系统下标准的编辑器,分为以下三种状态:
- 命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到 底行模式。
- 插入模式:只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。
- 底行模式:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
下面列举一些常用命令和技巧
基本使用
我们如何进入vi编辑器呢?
输入vi fileName
命令进入vi编辑器,这时处于命令行模式。
在命令模式下按下i
字母就会进入插入模式,这时就可以对对文件进行编辑了。
那我们如何退出vi编辑器呢?
在命令行模式下,按一下 :
冒号键进入底行模式
:w
保存但不退出。:w fileName
文件另存为filename。:wq
保存并退出。:q
退出但不保存。
在末尾加入!
表示强制执行,例如:q!
表示强制退出但不保存。
命令行模式功能键
进入插入模式的几种方法。
- 按
i
进入插入模式后,光标当前位置开始输入文件; - 按大写
I
进入插入模式后,光标所在行开始位置开始输入文件 - 按
a
进入插入模式后,光标所在位置的下一个位置开始输入文字; - 按
A
进入插入模式后,光标所在行末尾开始输入文字; - 按
o
进入插入模式后,在当前行下一行插入新的一行,从行首开始输入文字。 - 按
O
进入插入模式后,在当前行上一行是插入新的一行,从行首开始输入文字。
移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母hjkl
,分别控制光标左、下、上、右移一格。
其他移动光标的功能键
ctrl + b
屏幕往“后”移动一页。ctrl + f
屏幕往“前”移动一页。ctrl + u
屏幕往“后”移动半页ctrl + d
屏幕往“前”移动半页。home
,^
,0
移到行首。end
,\$
移到行尾gg
移到文件开头。G
移到文件最后。w
光标跳到下个字的开头e
光标跳到下个字的字尾b
光标回到上个字的开头#l
光标移到该行的第#个位置,如:5l,56l。
删除文字
x
每按一次,删除光标所在位置的“后面”一个字符。#x
:例如,「6x」表示删除光标所在位置的“后面”6个字符。X
大写的X,每按一次,删除光标所在位置的“前面”一个字符。#X
例如,「20X」表示删除光标所在位置的“前面”20个字符。dd
删除光标所在行。#dd
从光标所在行开始删除#行
复制
yw
将光标所在之处到字尾的字符复制到缓冲区中。#wy
复制#个字到缓冲区yy
复制光标所在行到缓冲区。#yy
例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。p
将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换
r
替换光标所在处的字符。R
替换光标所到之处的字符,直到按下「ESC」键为止。
撤销
u
如果您误执行一个命令,可以马上按下u
,回到上一个操作。按多次“u”可以执行多次回复。
更改
cw
更改光标所在处的字到字尾处c#w
例如,c3w
表示更改3个字
跳至指定的行
ctrl + g
列出光标所在行的行号。#G
例如,10G
,表示移动光标至文章的第15行行首。
底行模式下命令简介
在使用底行模式之前,请记住先按「ESC」键确定您已经处于命令行模式下后,再按:
冒号即可进入底行模式。
列出行号
set nu
输入set nu
后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
#
号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
查找字符 .
/关键字
先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。?关键字
先按?
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往前寻找到您要的关键字为止。
保存文件
w
在冒号输入字母w
就可以将文件保存起来。
离开vi
q
按「q」就是退出,如果无法离开vi,可以在q
跟一个!
强制离开vi。qw
一般建议离开时,搭配w
一起使用,这样在退出的时候还可以保存文件。