Vim有三种模式
命令模式、输入模式、底线命令模式。
打开Vim即进入命令模式。
模式间的切换:
命令模式= i/a/o/r/I/A/O/R
=>输入模式= ESC
=>命令模式
i, I 进入输入模式(Insert mode):
i 为从目前光标所在处输入,I为在目前所在行的第一个非空格符处开始输入。
a, A 进入输入模式:
a 为从目前光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入。
o, O 进入输入模式:
o 为在目前光标所在的下一行处输入新的一行;O为在目前光标所在处的上一行输入新的一行。
r, R 进入取代模式(Replace mode):
r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止。
命令模式= :
=>底线命令模式= Cmd+Enter
=> 命令模式
命令模式下常用命令:
移动光标:
命令 含义 数字n+上下左右键 想上下左右移动n行或n个字符 数字n+Space 向右移动n个字符 数字0或Home 移动到行首 $或End 移动到行末 H 光标移动到这个屏幕的最上方那一行的第一个字符 M 光标移动到这个屏幕的中央那一行的第一个字符 L 光标移动到这个屏幕的最下方那一行的第一个字符 G 移动到这个档案的最后一行 数字nG 移动到第n行 gg 移动到第一行 数字n 光标向下移动n行
搜索替换:
命令 含义 /word 向光标之下寻找一个字符串word。回车后,通过字母n继续同向搜索,字母N继续反向搜索 ?word 向光标之上寻找一个字符串word。同上 :n1,n2s/word1/word2/g 在第n1与n2行之间寻找字符串word1,并用字符串word2替换 :1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找字符串word1,并用字符串word2替换 :1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找字符串word1,并用字符串word2替换,且在取代前显示提示字符给用户确认 x, X 在一行当中,x向后删除一个字符 (相当于del按键),X为向前删除一个字符(相当于backspace) 数字nx 连续向后删除n个字符 数字nX 连续向前删除n个字符 dd 删除游标所在的那一整行 数字ndd 删除光标所在的向下n行,包括当前行 d1G 删除光标所在行到第一行的所有数据 dG 删除光标所在行到最后一行的所有数据 d$ 删除光标所在处,到该行的最后一个字符 d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 yy 复制光标所在的那一行 数字nyy 复制光标所在行的向下n行,包括当前行 y1G 复制光标所在行到第一行的所有数据 yG 复制光标所在行到最后一行的所有数据 y0 复制光标所在的那个字符到该行行首的所有数据 y$ 复制光标所在的那个字符到该行行尾的所有数据 p,P p为将已复制的数据在光标后插入,P则在光标前插入;如果已复制多行,则分别是在光标的下一行或前一行插入 J 将光标所在行与下一行的数据结合成同一行 数字ncj 删除自当前行起n行数据,并进入输入模式 u 撤销 [Ctrl]+r 反撤销
底线命令模式常用命令:
命令 含义 :w 保存 :w! 强制保存,是否成功与访问权限有关 :q 退出 :q! 强制退出不存储修改 :wq 存储修改后退出 :wq! 强制存储修改后退出 ZZ 若文件有改动,保存后退出 ZQ 不保存,强制退出 :w [filename] 另存为 :r [filename] 将filename的内容附加到光标后 :n1,n2 w [filename] 将n1到n2行的内容存储到filename :! command 暂时离开 vi 到指令行模式下执行 command 。例如:! touch test.txt
在不关闭vim的情况下在当前目录下创建text.txt文件;! ls /home
在vi当中察看/home目录下文件 :set nu 显示行号 :set nonu 取消行号