普通模式:移动光标的操作 G或(shift+g) 将光标移动到文件的最后一行。 gg 将光标移动到文件的第一行,等价于1gg或1G。 0 数字0,将光标从所在位置移动到当前行的开头。 $ 从光标所在位置移动到当前行的结尾。 n<Enter> n为数字,<Enter>为回车键,将光标从当前位置向下移动n行。 ngg n为数字,移动到文件的第n行,如11gg可移动到第11行,可配合 “:set nu”查看。 H 光标移动到当前窗口最上方的那一行。 M 光标移动到当前窗口中间的那一会。 L 光标移动到当前窗口最下方的那一行。 h或(←) 光标向左移动一个字符。 j或(↓) 光标向下移动一个字符。 k或(↑) 光标向上移动一个字符。 l或(→) 光标向右移动一个字符。 普通模式:搜索与替换操作 /liang 从光标位置开始,向下寻找名为liang的字符串。 ?liang 从光标位置开始,向上寻找名为liang的字符串。 n 从光标位置开始,向下重复前一个搜索的动作。 N 从光标位置开始,向上重复前一个搜索的动作。 :g/A/s//G/g 把符号A的内容全部替换成B,斜线为分隔符,可以用@、#等替代。 :%s/A/B/g 把符号A的内容全部替换成B,斜线为分隔符,可以用@、#等替代。 :n1,n2s/A/B/gc n1、n2为数字,在第n1行和第n2行直接寻找A,用B替换。 普通模式:复制、粘贴、删除等操作 yy 复制光标所在的当前行。 nyy n为数字,复制光标开始向下共n行。 p(小写) 将已复制的数据粘贴到光标的下一行。 P(大写) 将已复制的数据粘贴到光标的上一行。 dd 删除光标所在的当前行。 ndd n为数字,删除从光标开始向下共n行。 u 恢复(回滚)前一个执行过的动作。 x 向后删除字符。 X 向前删除字符。 d1G 删除当前行至第一行。 dG 删除当前行至最后一行。 d0 删除当前光标文本至行首。 d$ 删除当前光标文本至行尾。 进入编辑模式命令 i 在当前光标所在处插入文字。 a 在当前光标所在的下一个字符插入文字。 I 在当前所在行行首的第一个非空格符处开始插入文字,和A相反。 A 在当前所在行行位的最后一个字符处开始插入文字,和I相反。 O 在当前所在行的上一行插入新的一行。 o 在当前所在行的下一行插入新的一行。 Esc 退出编辑模式,回到命令模式中。 命令行模式: :wq 退出并保存。 :wq! 退出并强制保存,“!”为强制的意思。 :q! 强制退出,不保存。 :n1,n2 w filename n1、n2为数字,将n1行到n2行的内容保存成filename这个文件。 :n1,n2 co n2 n1、n2为数字,将n1行到n2行的内容复制到n3位置下。 :n1,n2 m n1、n2为数字,将n1行到n2行的内容剪切到n3位置下。 :!command 暂时离开vi到命令行模式下执行command的显示结果,例如,:!ls /etc :set nu 显示行号。 :set nonu 与set nu相反,取消行号。 :vs filename 垂直分屏显示,同时显示当前文件和filename对应文件的内容。 :sp filename 水平分屏显示,同时显示当前文件和filename对应文件的内容。 I + # + Esc 在可视块模式下(Ctrl+V),一次性注释所选的多行,取消注释可用“:n1,n2s/#/gc”,这里的操作是一个通用的方法,# 号可以换成别的操作,例如Tab键盘,这样就是批量缩进。 Del 在可视化模式下(Ctrl+V),一次性删除所选内容。 r 在可视化模式下(Ctrl+V),一次性替换所选内容。 vim 打开文件的方法小结 vim file 打开/新建文件,光标置于第1行行首,file为任意文件名。 vim file +n 打开文件,光标置于第n行行首,n为自然数。 vim file + 打开文件,光标置于最后一行行首。 vim file +/pattern 将光标置于第一个与pattern匹配的字符串处,pattern为任意字符串。 特别说明: 当如果不知道自己处在什么模式时可以按2次Esc键即可回到命令模式。 最要提醒:注意大小写!!!