vi的使用
vi有三种模式。
输入vi hello.txt
。此时无法输入内容,当前为命令模式。
在命令模式下输入i(insert),这个时候表示进入到插入模式(编辑模式,插入模式,名字随便取,就是可以修改内容的模式)。
在插入模式模式,按Esc会退出插入模式并进入到命令模式。此时按冒号,会进入最下行模式(底行模式),此时可以输入一些指令。
文件的保存
在底行模式下,输入:wq
表示保存当前文件并退出。:q!
表示放弃对文件的修改并退出。:w abc.txt
表示将当前文件另存为abc.txt。
文件的编辑操作
所有操作都在命令模式下完成。
删除
x
,删除光标所在后面的一个字符。#x
,比如2x
删除光标所在位置后面2个字符。X
,大写的X。表示删除光标所在位置前面的一个字符。#X
,大写的X,比如2X
删除光标所在位前面2个字符。dd
,删除光标所在的行。#dd
,删除多行数据。比如2dd
删除光标所在行开始的2行数据。
复制
yy
复制当前行。p
粘贴数据。#yy
复制多行数据。ym
复制光标到结尾的所有字符。#yw
复制光标到结尾的N个字符。
撤回
u
撤退修改
插入
i
在光标所在位置插入数据。o
在光标下面新建一行插入数据。
移动光标
在插入模式,命令模式都可以通过通过箭头键盘上的上下左右的箭头移动,也可以在命令模式,通过键盘的hjkl分别代表左边,下边,上边,右边。
ctrol + f
下一页。ctrol + b
上一页。^
光标移动到行首。$
光标移动到行尾。#l
,字母l,表示光标往后移动n个字符。ctrol +g
显示光标所在的行号。#G
移动光标到第三行的行首。
底行模式的其他命令
:set nu
显示行号。:set nonu
隐藏行号。:3
直接跳转到第三行。:/ui
从头开始搜索字符,n查找下一个。:?ui
从结尾开始搜索字符,n查找上一个。
字符替换
:s/old/new
替换当前行的第一个old为new。:s/old/new/g
替换当前行的所有old为new。:#,#s/old/new/g
替换两行之间的old为new。:%s/old/new/g
替换全文的old为new。:%s/old/new/gc
替换全文的old为new,并要求确认。
其它操作
:!ls
调用外部命令。:#,#w a.txt
将2行之间的内容另存为a.txt文件。:r anotherfile
将另外一个文件的内容追加到当前文件