命令 光标移动 h或^h 向左移一个字符 j或^j或^n 向下移一行 k或^p 向上移一行 l或空格 向右移一个字符 G 移到文件的最后一行 nG 移到文件的第n行 w 移到下一个字的开头 W 移到下一个字的开头,忽略标点符号 b 移到前一个字的开头 B 移到前一个字的开头,忽略标点符号 L 移到屏幕的最后一行 M 移到屏幕的中间一行 H 移到屏幕的第一行 e 移到下一个字的结尾 E 移到下一个字的结尾,忽略标点符号 ( 移到句子的开头 ) 移到句子的结尾 { 移到段落的开头 } 移到下一个段落的开头 0或| 移到当前行的第一列 n| 移到当前行的第n列 ^ 移到当前行的第一个非空字符 $ 移到当前行的最后一个字符 +或return 移到下一行的第一个字符 - 移到前一行的第一个非空字符
在vi中添加文本
命令 插入动作 a 在光标后插入文本 A 在当前行插入文本 i 在光标前插入文本 I 在当前行前插入文本 o 在当前行的下边插入新行 O 在当前行的上边插入新行 :r file 读入文件file内容,并插在当前行后 :nr file 读入文件file内容,并插在第n行后 escape 回到命令模式 ^v char 插入时忽略char的指定意义,这是为了插入特殊字符
命令 复制操作 yy 将当前行的内容放入临时缓冲区 nyy 将n行的内容放入临时缓冲区 p 将临时缓冲区中的文本放入光标后 P 将临时缓冲区中的文本放入光标前 "(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 "(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后 "(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前
在vi中撤消与重复
命令 撤消操作 u 撤消最后一次修改 U 撤消当前行的所有修改 . 重复最后一次修改 , 以相反的方向重复前面的f、F、t或T查找命令 ; 重复前面的f、F、t或T查找命令 "np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9) n 重复前面的/或?查找命令 N 以相反方向重复前面的/或?命令