目前工作中需要在linux下编辑一些文本文件,不可避免的接触到了 vi, 在使用过程中,记录了如下一些经常使用的命令,特此记录一下 :
vi 编辑器有两种模式 :编辑模式 和 非编辑模式(有的地方又将其分为 一般模式和命令行模式,在此不做此细分), 编辑模式下,就是你可以通过键盘输入任何文字,这里也不做过多陈述,这里主要就是要记录一下非编辑模式下我们经常用到的命令 :
一: 非编辑模式下进入编辑模式
o (小写o) : 在当前光标位置下方插入一个空行,并且进入编辑模式
O(大写O): 在当前光标位置上方插入一个空行,并且进入编辑模式
i(小写i): 在当前光标所在字符前面准备写入,并且进入编辑模式
I(大写I): 在当前光标所在行的行首准备写入,并且进入编辑模式
a(小写a): 在当前光标所在字符的后面准备写入,并且进入编辑模式
A(大写A): 在当前光标所在行的行末准备写入,并且进入编辑模式
r(小写r): 对当前光标所在字符进行替换,只替换一个字符,替换完毕保持非编辑状态
R(大写R): 从当前光标所在字符开始进行连续替换,直到按下 ESC 退出为止
-------------以下开始都是纯粹非编辑模式下常使用的命令:---------------------
二 :移动光标命令 (要处理一个文件,首先要把光标定位到要处理的地方)
h,j,k,l (均为小写) : 对应 左下上右 四个移动方向,当然vi中移动光标也可以用方向键
数字h,j,k,l : 对应左移动几个字符(数字指定) 向下上移动几行,向右移动几个字符
数字enter(回车键) : 向下移动几行(数字指定) , 等同于 : 数字j
0 (数字0) 或者 ^(在正则 中这就表示行首匹配): 将光标移动到当前所在行的行首
$(在正则 中这就表示行尾匹配): 将光标移动到当前所在行的行尾
H,M,L (均为大写): 将光标移动到当前屏显页的最上,中间, 最下一行
G (大写) : 将光标移动到文件末尾,查看日志最常用,因为我们通常要看最新的日志记录
数字G : 将光标直接定位到第几行(数字指定),比如 10G,就是将光标定位到文件第10行 (这个命令可以配合 :set nu 使用,关于:set nu 参考下面)
gg: 将光标移动到文件第一行,该命名等同于 1G
ctrl + f(小写f) :向下翻页,整个屏显显示下一页,这个对于快速查看日志非常有用
ctrl + b(小写b) : 向上翻页,整个屏显显示上一页,这个对于快速查看日志非常有用
三 :查找,替换,删除,复制等命令(命令模式下直接处理文件)
/word : 从光标所在位置,向下查找字符序列 word
?word : 从光标所在文件,向上查找字符序列 word
n(小写n) : 重复上一次查找命令,如果我们输入 /word 回车,显示了第一个查找结果,我们可以不断按下 n ,显示下一个查找结果
N(大写N) : 反向执行上一次查找命令,如果我们输入 /word 回车,显示了第一个查找结果,我们可以不断按下 N , 会向上开始查找这个字符序列
数字1,数字2s/word1/word2/g : 从数字1指定的行,到数字2指定的行进行遍历,将所有的 word1 替换为 word2 , 如果没有最用的 g , 则每一行只进行一次替换
数字1,$s/word1/word2/g : 从数字1指定的行,到文件末尾,将所有的 word1 替换为 word2 , 如果没有最用的 g , 则每一行只进行一次替换
数字1,数字2s/word1/word2/gc: 多一个小写c , 表明每一个替换均需要进行确认,确认通过才替换
x (小写) : 从光标所在字符(包括)开始向后删除
X(大写X) : 删除光标所在字符的前一个字符,不会删除光标所在字符
dd : 删除光标所在当前整行
数字dd : 从光标所在行开始,向下删除数字指定的行数
dw : 从光标所在字符开始向后删除,直到一个单词分界为止,单词分界可以是空格或者逗号等符号! 这个命令可以用于删除整个单词!d
u (小写u): 复原命令,通过上述修改命令对文件进行了任何改动(包括编辑模式下的改动),可以通过这个命令进行还原,类似撤销操作!
.(英文句点) : 重复上个命令操作,如我要删除几行,按下第一个dd后,我们可以用这个命令,来重复即可
yy : 复制光标当前行
数字yy : 从光标当前行开始向下复制数字指定的行数
p(小写p) : 在光标所在行的下面进行黏贴
P(大写P) : 在光标所在行的上面进行黏贴
四 :其他常用的几个命令和保存退出编辑器命令 (均以 : 冒号开头):
:w : 保存文件
:w filename : 保存当前文件到另一个文件,类似于另存为命令
:wq : 保存文件并且退出编辑器
:wq! : 强制保存文件,并且退出编辑器
:q : 退出编辑器,如果文件被修改,会提示是否保存
:q! : 强制退出,所有修改操作均被遗弃
:set nu : 显示行号
:set nonu : 取消显示行号
以上应该就是我们在使用 vi 编辑文件时,最常使用的命令了,vi还有很多命令,但是我们并不会经常用到,上面的这些,应付平时的一些处理任务已经足够了! 不要死记硬背,多多练习才是王道!