$vi file 使用Escape键返回命令模式。 0 跳到一行的开始 $ 跳到一行的结束 n+ 向下跳n行 n- 向上跳n行 H 移到屏幕最上面一行 M :光标移至屏幕中间行 L 移到屏幕最下面一行 G 跳到文件最后一行 :set nu/nonu 显示/隐藏行号 :xx 达到xx行 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 yy 把当前行放入缓冲区。nyy把当前行开始的n行放入缓冲区 p 将缓冲区内容取到光标后面(所在行的下面一行) P 将缓冲区内容取到光标前面(所在行的上面一行) u 恢复上一次的修改。 x(X)删除光标所在的字符;nx删除光标所在字符开始的n个字符;删除内容放入缓冲区;x删除光标后的,而X删除光标前的 dd 删除光标所在行;ndd删除光标所在行开始的n行;删除内容放入缓冲区 :first,last d 删除first行到last行;删除内容放入缓冲区 D 删除光标所在行光标后面的内容 J 把下一行内容加到本行行尾 do:删至行首 d$:删至行尾 r:替换当前字符(为输入r之后输入的字符) R:替换当前字符及其后的字符(为输入r之后输入的字符),直至按ESC键 i 在光标之前开始输入文本 a 在光标之后开始输入文本 o 在光标所在行后插入一空行 O 在光标所在行前插入一空行 :first,last copy dest 拷贝first到last行的内容插入到dest行下面 :first,last move dest 移动first到last行的内容插入到dest行下面 :r filename 读入文件filename的内容插入到光标所在行的下面 :s/int/long/ 替换当前行的第一个int为long :s/int/long/g 替换当前行的所有int为long :s@long/int@int/long@g 使用@作为分隔符;替换当前行所有long/int为int/long :first[,last]s/int/long 替换first行[到last行];first/last为.表示当前行,$表示最后一行 :%s/int/long 替换所有行 :w 回写修改后的文件。 :w filename 当filename不存在时,把修改后的文件存为文件filename。当文件filename存在时,报错 :q 退出vi,若用户对编辑的文件有所修改,系统不会让用户使用q命令退出。 :q! 退出vi而不管是否对文件有改动。 :wq 保存对文件的修改并退出vi :sh 启动sh,从sh中返回可用exit或ctrl+d /string 向前搜索string n 查找下一个匹配的字符串 ?string 向后搜索string n 查找下一个匹配的字符串