Linux vi 最常用命令小记

时间:2022-10-26 10:51:47

目前工作中需要在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还有很多命令,但是我们并不会经常用到,上面的这些,应付平时的一些处理任务已经足够了! 不要死记硬背,多多练习才是王道!