使用 vi时,后面必须要跟上文件名。如果已有则打开,没有就创建。
打开文件后,vi有三种模式:一般模式、编辑模式、命令模式
一般模式:打开文件默认的模式。可以删除、复制和粘贴 ,但是不能写
编辑模式:再一般模式下按下“i, I, o, O, a, A , r, R”,等任何一个字母后才能进入编辑模式,此时左下角会出现INSERT 或 REPLACE ,可以进行编辑,要回到一般模式,按下[ESC]
命令模式 :再一般模式下,输入“: ,/, ?” 三个中的任何一个键后进入命令模式,可以完成数据的查找,读取、保存、大量替换字符、离开vi、显示行号等。
常用的按键
一般模式下:
光标移动
1. 上下移动光标可以使用四个箭头,或者是 hjkl 来移动光标,还可以与数字结合,如30-> 向右移动30个字符
2. 【Ctrl】+ 【f】 屏幕向下移动一页,相当于【Page Down】
3. 【Ctrl】+ 【b】 屏幕向上移动一页,相当于【Page Up】
4. 0或【Home】 移动到当前行最前面的字符
5. $或【End】 移动到当前行最后面的字符
6. G 移动到文件的最后一行
7. nG 移动到文件的第n行,通常与 :set nu 配合使用,后者可以给文件设置行号
8. gg 移动到文件的第一行,相当于 1G
9. N【Enter】 光标向下移动N行
查找与替换
- /word 向下查找一个名为word 的字符串
- ?word 向上查找一个名为word的字符串
- n 重复前一个查找的操作,比如我们刚才执行向下查找 /amazing ,第一个后会停止,按下n 后继续执行
- N “反向” 进行前一个查找的操作,比如刚才是向下查找,按下N后变成向上查找
- :n1,n2s/word1/word2/g 再n1 到n2 行之间将word1替换为word2
- :n1,n2s/word1/word2/gc 再每次替换的时候询问用户是否要替换
:1,$s/word1/word2/g (gc) 从第一行到最后一行执行替换操作
删除、复制、粘贴
x,X 在一行中x 为向后删除一个字符(相当于【Del】),X 为向前删除一个字符(相当于【Backspace】)
- nx 连续向后删除n 个字符。比如删除20个字符 “20x”
- dd 删除光标所在的那一行
- ndd 删除光标所在的向下n行,例如删除20行 “20dd”
- yy 复制光标所在的一行
- nyy 复制光标所在的向下n行 例如“20yy”
- p,P p为将已复制的内容在当前光标的下一行粘贴,P为粘贴在当前的光标的上一行
- u 复原前一次操作
- 【Ctrl】+ 【r】 重做上一个操作
.(小数点) 重复前一个操作
编辑模式
i, I 进入插入模式(insert mode):i 为从目前所在的光标处插入,I 为目前所在行的第一个非空格符处插入
- a,A 插入模式,a为从目前所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入
- o,O 插入模式, o 为在目前光标所在的下一行处插入新的一行;O 为在目标光标所在处的上一行插入新的一行
r, R 替换模式, r 只会替换光标所在那个字符一次;R 会一直替换光标所在的字符,直到按下【Esc】为止
命令模式
:w 将编辑的数据写入硬盘文件中
- :q 离开vi
- :wq 保存后离开vi ,”:wq!” 为强制保存后离开
- :set nu 设置行号
- :set nonu 取消行号