vi 学习命令记录

13年前
普通模式下,光标位移
1、h 或 向左方向键 :光标向左移动一个字符
2、j 或 向下方向键 : 光标向下移动一个字符
3、k 或 向上方向键 : 光标向上移动一个字符
4、l 或 向右方向键 : 光标向右移动一个字符
5、+ : 光标移动到非空格符的下一列
6、- : 光标移动到非空格符的上一列
7、n<space> : 按下数字后再按空格键,光标会向右移动这一行的n个字符,如果该行字符不够则继续下一行
8、[ctrl] + [f] : 屏幕向前移动一页
9、[ctrl] + [b] : 屏幕向后移动一页
10、[ctrl] + [d] :屏幕向前移动半页
11、[ctrl] + [u] : 屏幕向后移动半页
12、0 : 这是数字0,移动到这一行的最前面,不管光标下是否有字符
13、^ : 这是数字6上方的符号,移动到这一行的最前面字符处,光标下有字符
14、$ : 移动到这一行的最后字符处
15、H : 大写H,光标移动到当前屏幕的最上方那一行
16、M: 大写M,光标移动到当前屏幕的中央那一行
17、L: 大写L,光标移动到当前屏幕的最下方那一样
18、G: 移动到文件的最后一行
19、nG: n为数字,表示移动到这个文件的第n行,配合set nu使用,要不然看不清楚喔
20、n<Enter>:n为数字,<Enter>为回车键,表示光标向下移动n行

普通模式下,搜索与替换
1、/word : 向光标后插入一个word,配合n使用的话,会往下搜索
2、?word : 向光标后插入一个word,配合n使用的话,会往上搜索
3、:n1,n2s/word1/word2/g : n1,n2表示行数,/word1,表示查找的字符串,/word2,表示替换的字符串,g为全局,该命令的作用就是在第n1行到第n2行之间,查找word1,并将该字符串替换为word2
4、:1,$s/word1/word2/gc : 从第一行到最后一行寻找word1字符串,并将该字符串替换为word2,在替换前显示提示字符给使用者确认是否要替换。

普通模式下,删除、复制、粘贴
1、x, X : x删除光标下的字符,X删除光标前的一个字符
2、nX : n为数字,删除光标所在位置(包括所在位置)之后的n-1个字符
3、dd :删除光标所在的一整行
4、ndd : n为数字,删除光标所在行(包括所在行)向下的n-1行
5、d1G: 中间的为数字1,删除光标所在行到第一行之间的数据,d为删除命令,1G表示定位到第一行,等同dgg
6、dG : 删除光标所在行到最后一行的所有数据
7、dgg : 删除光标所在行到第一行之间的数据,d为删除命令,gg为定位到第一行
8、yy : 复制光标所在的一行
9、nyy :n为数字,复制光标所在行(包括所在行)以下的n-1行数据
10、y1G :等同于ygg,1为数字1,表示复制光标所在行到第一行之间的所有数据
11、yG : 复制光标所在行到最后一行之间的所有数据
12、p, P : p 将复制的数据粘贴在光标所在行的后面,如果复制数据有换行符的话,那就在下一行粘贴,P跟p的粘贴位置相反
13、J : 大写J,将光标所在行与下一行的数据结合成一行
14、cc : 删除一整行,然后进入编辑模式
15、u : 还原前一个动作

编辑模式
1、i, I  : i表示在光标前进入插入模式,原有的文字会往后退。I,会在光标所在行的第一个字符前进入插入模式。
2、a,A : a表示在光标所在的下一个字符开始插入字符。A,会在光标所在行的最后一个字符后进入插入模式。
3、o, O :插入新的一行,o表示在光标所在行的下一行开始输入字符,O表示在光标所在行的上一行开始输入字符
4、r,R : 替换,r会替换光标下的那一个字符,R会一直替换输入的字符,知道按下ESC键为止
5、Esc: 退出编辑模式,回到普通模式中

命令模式:
1、:w : 将文件写入硬盘中
2、:w! : 若文件为只读是,强制写入
3、:q  : 离开vi
4、:q! : 若修改过文件,但不想保存,使用!强制离开,不储存文件
5、:wq : 保存后退出,若为:wq!表示强制保存后退出
6、:e! : 将文件还原到最原始的状态
7、ZZ : 如果文件没有修改,则表示直接退出,如果文件已经修改过,则保存后离开
8、:w [filename] :将文件另存为另外的文件名,类似于另存为
9、:r [filename] :在编辑文件的时候,读入另外一个文件的数据,将filename的内容读取到光标所在行后面
10、:n1,n2 w [filename] : n1,n2为数字,表示行数,表示将n1到n2行的内容保存成filename这个文件
11、:! command 暂时离开vi到命令模式下执行comman的显示结果