记录一下vi的一些使用指令,蓝色部分是比较常用的,其中使用过的重新进行了描述,极少部分是未使用过的,还有一些未使用也未记录进来,后续再来补充修正:
参考资料:http://cn.linux.vbird.org/linux_basic/0310vi_2.php
vi分三种模式:一般模式、编辑模式、指令列命令模式,作用如下:
一般模式:
以vi 打开一个文档就直接进入一般模式了即默认模式,在此模式中,可以使用 【上、下、左、右】按键来移动光标,可以使用 【删除字符】或【删除整行】来处理内容,也可以使用【复制、粘贴】来处理文件数据。
编辑模式:
在默认模式中,可以进行删除、复制、粘贴等操作,但是无法编辑文件内容,要等按下【i,I,o,O,a,A,r,R】等任何一个字母之后才会进入编辑模式。通常在Linux中,按下这些按键的时候,在画面的左下方会出现【INSERT 或 REPLACE】等字样,此时才可以进行编辑。如果要退出编辑模式,回到默认模式,按下[ESC]按键即可。
指令列命令模式:
在默认模式中,输入【:/?】三个中的任何一个,就可以将光标移动到最底下的那一行。在这个模式中,可以提供你【搜索资料】的动作,读取、存盘、大量取代字符、离开vi、显示行号等等的动作则是在此模式中达成的。
注:一般模式即默认模式可与编辑模式及指令列命令模式切换,但编辑模式与指令列命令模式之间不可互相切换。
按键说明:
一般模式可用的按钮说明,光标移动、复制粘贴、搜索取代等:
移动光标的方法:
h 或 向左箭头键 : 光标向左移动一个字符,多次移动,【h 或 向左箭头键】前加要移动的次数,比如,5h ,向左移动5个字符。
j 或 向下箭头键 : 光标向下移动一行,多行移动,【j 或 向下箭头键】前加要移动的行数,比如,10j,向下移动10行。
k 或 向上箭头键 : 光标向上移动一行,多行移动,【k或 向上箭头键】前加要移动的行数,比如,16k,向上移动16行。
l 或 向右箭头键 : 光标向右移动一个字符,多次移动,【l 或 向右箭头键】前加要移动的次数,比如,10l,向右移动10个字符。
【CTRL】+【f】 : 屏幕向下移动一页,相当于【Page Down】按键。
【CTRL】+【b】: 屏幕向上移动一页,相当于【Page Up】按键。
【CTRL】+【d】: 屏幕向下移动半页。
【CTRL】+【u】: 屏幕向上移动半页。
+ : 光标移动到非空格符的下一列。
- : 光标移动到非空格符的上一列。
n<space> : n 表示数字。按下数字后再按下空格键,光标会向右移动到这一行的第n个字符。
注:n<space>与 h、l 在Centos6.8中的区别在于,前者:如果移动的字符超过该行另起一行继续移动剩余的字符,后者则不会。
0或【HOME】键 : 数字0,移动到这一行的最前面字符处。
$或【END】键 : 移动到这一行的最后面字符处。
H : 光标移动到当前屏幕的最上方那一行的第一个字符处。
M : 光标移动到当前屏幕的*一行的第一个字符处。
L : 光标移动到当前屏幕的最下方一行的第一个字符处。
G : 移动到当前文档的最后一行。
nG : n为数字,移动到当前文档的第n行。
gg : 移动到当前文档的第一行。
n<ENTER> : n为数字,光标向下移动n 行。
搜索与取代:
/word : 在光标之下【向下】寻找一个名为word的字符串。定位到第一个该单词出现的位置处。
?word : 在光标之上【向上】寻找一个名为word的字符串。定位到第一个该单词出现的位置处。
n : n,英文按键,重复前一个搜索的动作。继续执行搜索。
N : N,英文按键,反向重复前一个搜索的动作。反向继续执行搜索。
:n1,n2s/world1/word2/g : n1与n2是数字,在第n1到n2之间寻找world1字符串,并将该字符串替换为word2.
:1,$s/world1/word2/g : 从第一行到最后一行寻找字符串world1,并将该字符串替换为word2。全局替换。
:1,$s/world1/word2/gc : 从第一行到最后一行寻找字符串world1,并将该字符串替换为word2,替换之前提示用户是否确认替换。全局替换,提示是否替换。
删除、复制、粘贴:
x,X : 在一行字当中,x 向后删除一个字符,相当于【DEL】键,X 向前删除一个字符,相当于【BACKSPACE】键。
nx : n为数字,连续向后删除n个字符。
dd : 删除光标所在行一整行。
ndd : n数字,删除光标所在行向下n行。包括光标所在行。
d1G : 删除光标所在行到第一行的所有数据。包括光标所在行。
dG : 删除光标所在行到最后一行的所有数据.包括光标所在行。
d$ : 删除光标所在处到该行的最后一个字符。
d0 : 0数字0,删除光标所在处,到该行的最前面的一个字符。
yy : 复制光标所在那一行的内容
nyy : n为数字,复制光标所在行向下n行数据,包括光标所在行。
y1G : 复制光标所在行到第一行的所有数据。
yG : 复制光标所在行到最后一行的所有数据。
y0 : 复制光标所在处字符到该行行首的所有数据。
y$ : 复制光标所在处字符到该行行末的所有数据。
p : 将已复制的数据在光标所在下一行粘贴。
P : 将已复制的数据在光标所在上一行粘贴。
u : 复原上一个动作。
[ctrl]+r: 重做上一个动作。
. : 小数点,重复前一个动作。
一般模式切换到编辑模式可用按钮:
i,I : 进入编辑模式进行插入操作,i在光标所在处插入,I 光标所在行第一个非空格符处开始插入。
a,A : 进入编辑模式进行插入操作,a光标所在的下一个字符处开始插入,A光标所在行最后一个字符处开始插入。
o,O : 进入编辑模式进行插入操作,小写英文字母o当前光标所在行后插入新的一行,大写字母O当前光标所在行前插入新的一行。
r,R : 进入编辑模式进行取代操作,r替换光标所在的字符一次,R替换光标所在的字符,直到【ESC】为止。
注:进入编辑模式, vi画面的左下角会出现【--INSERT--】或【--REPLACE--】的字样。
[ESC]: 退出编辑模式,进入一般模式中。
一般模式切换到指令列模式可用按钮:
指令列的存储、离开等指令:
:w : 将编辑的数据写入硬盘文档中。
:wq : 存储后离开。:wq!强制存储后离开
:q : 离开vi
:q! : 强制离开且不存储文档修改过的内容。
ZZ : 若文档有改动,则存储后离开,若未改动,则不存储离开。
:w[filename] : 将编辑的数据存储为另一个文档
vim环境的变更:
:set nu : 显示行号。
:set nonu : 取消行号。