linux常用命令之二---vi的使用

mac2024-12-02  24

vi有三种模式,一般模式,编辑模式和命令行模式,一般模式下可以进行查找、替换、复制、粘贴、删除等操作,编辑模式下可以编辑文件内容,命令行模式下可以进行保存、退出、显示行号等操作。命令行模式和编辑模式之间不能切换,除此之外,任意两种模式之间可以相互切换。

1 一般模式下:

1.1 光标移动

h或←:向左移动一个字符 j或↓:向下移动一个字符 k或↑:向上移动一个字符 l或→:向左移动一个字符 (推荐使用h j k l,而不是方向键,因为字母键用起来手指移动幅度更小,速度更快,如果想要向某个方向移动n个字符,只需要在相应的字母前加入数字n,如5h即为向左移动5个字符) ctrl+f:向下翻页 ctrl+b:向上翻页 G:移动到文件最后一行 nG:移动到第n行 gg:移动到文件的第一行 H:移动到当前屏幕第一行 L:移动到当前屏幕最后一行 0:移动到当前行第一个字符 $:移动到当前行最后一个字符 n+enter:光标向下移动n行,且光标会位于所在行的第一个字符处

1.2 查找与替换

/text:向下查找text ?text:向上查找text 输入查找命令后,按“n”(n表示键盘上的n键,不是指数字),表示继续查找,按“N”表示继续反向查找 :n1,n2s/text1/text2/g:查找n1行与n2行之间的text1字符串并将其替换为text2 :n1,n2s/text1/text2/gc:同上,只是在替换时会要求用户确认是否进行替换 (如果是全文替换,则n1=1,n2=$)

1.3 复制、粘贴、删除

1.3.1 复制与粘贴

在复制的操作中,在光标移动那一节中,我们知道G表示文件最后一行,1G表示文件第一行,0表示当前行的行首,$表示当前行的行末,因为有了下面的操作 y1G:复制当前行到第一行的数据 yG:复制当前行到最后一行的数据 y0:复制当前光标所在处到该行第一个字符的数据 y$:复制当前光标所在处到该行最后一个字符的数据 yy:复制整行的数据 nyy:复制向下n行的数据 y表示copy (复制光标所在处向后n个字符的数据如何操作??) p(paste):将已复制的数据在光标后粘贴 P:将已复制的数据在光标前粘贴

1.3.2 删除

x:向后删除一个字符 X:向前删除一个字符 nx/nX:向前或向后删除n个字符 dd:删除整行 ndd:向下删除n行 d0:删除光标所在处到该行行首的所有数据(0表示行首) d$:删除光标所在处到该行行末的所有数据($表示行末) d1G:删除当前行到文件一行的第一行的所有数据 dG:删除当前行到文件最后一行的数据 (最后几个命令其实不用记,和复制同样道理,0表示行首,$表示行末,1G表示文件第一行,G表示文件最后一行,同样可以猜想,要是想删除当前行到第n行的数据,则是dnG)

1.4 其他

u:撤销上一个动作,相当于ctrl+z ctrl+r:重做上一个动作 另外小数点"."表示重复上一个动作,比如重复删除,粘贴等

2.编辑模式

一般模式下输入以下字符可以进入编辑模式 i或I:i表示从当前光标处插入,I表示从该行第一个字符处插入 a或A:a表示从光标所在处的下一个字符开始插入,A表示从该行最后一个字符处开始插入 o或O:o表示从光标所在处下一行插入新的一行,O表示从光标所在处上一行插入新的一行 以上三种都会进入插入模式,在vi界面的左下角会出现----INSERT----字样 r或R:r表示替换光标所在处的字符一次,R则会一直处于替换模式,输入R后,vi界面左下角会出现—REPLACE—字样(相当于window下的INSERT键)

3.命令行模式

:w:将修改进行保存 :q:推出vi :q!:不保存当前的修改,强制退出 :wq:保存退出 :w[text_name]:另存为一个名为text_name的文件,注意实际输入的时候没有方括号 :set nu:显示行号 :set nonu:取消显示行号

最新回复(0)