Vim 有一下几种基本模式: 常规模式、插入模式、可视模式、选择模式、命令行模式、Ex模式。
集中衍生模式: 操作符等待模式、插入普通模式、插入可视模式、插入选择模式、替换模式
- 普通模式
- 在普通模式中,用户可以执行一般的编辑器命令,比如移动光标,删除文本等等。这也是Vim启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式)。
Vim强大的编辑能力中很大部分是来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令”dd”删除当前行,但是第一个”d”的后面可以跟另外的移动命令来代替第二个”d”,比如用移动到下一行的”j”键就可以删除当前行和下一行。另外还可以指定命令重复次数,”2dd”(重复”dd”两次),和”dj”的效果是一样的。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按”a”(append/追加)键或者”i”(insert/插入)键。
- 插入模式
- 在这个模式中,大多数按键都会向文本缓冲中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按ESC键回到普通模式。
- 可视模式
- 这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim的”文本对象”也能和移动命令一样用在这个模式中。
- 选择模式
- 这个模式和无模式编辑器的行为比较相似(Windows标准文本控件的方式)。这个模式中,可以用鼠标或者光标键高亮选择文本,不过输入任何字符的话,Vim会用这个字符替换选择的高亮文本块,并且自动进入插入模式。
- 命令行模式
- 在命令行模式中可以输入会被解释成并执行的文本。例如执行命令(”:”键),搜索(”/”和”?”键)或者过滤命令(”!”键)。在命令执行之后,Vim返回到命令行模式之前的模式,通常是普通模式。
- Ex模式
- 这和命令行模式比较相似,在使用”:visual”命令离开Ex模式前,可以一次执行多条命令。
衍生模式:
- 操作符等待模式
- 这个派生模式指普通模式中,执行一个操作命令后Vim等待一个”动作”来完成这个命令。Vim也支持在操作符等待模式中使用”文本对象”作为动作,包括”aw”一个单词(a word)、”as”一个句子(a sentence)、”ap”一个段落(a paragraph)等等。
比如,在普通模式下”d2as”删除当前和下一个句子。在可视模式下”apU”把当前段落所有字母大写。
- 插入普通模式
- 这个模式是在插入模式下按下ctrl-o键的时候进入。这个时候暂时进入普通模式,执行完一个命令之后,Vim返回插入模式
- 插入可视模式
- 这个模式是在插入模式下按下ctrl-o键并且开始一个可视选择的时候开始。在可视区域选择取消的时候,Vim返回插入模式。
- 插入选择模式
- 通常这个模式由插入模式下鼠标拖拽或者shift方向键来进入。当选择区域取消的时候,Vim返回插入模式。
- 替换模式
- 这是一个特殊的插入模式,在这个模式中可以做和插入模式一样的操作,但是每个输入的字符都会覆盖文本缓冲中已经存在的字符。在普通模式下按”R”键进入。
常见命令: h、← 左移光标 j、↓ 下移光标 k、↑ 上移光标 l、→ 右移光标 0、^、HOME 移动到光标所在列的行首 $、END 移动到光标所在列的行末 CTRL+u 向上半页 CTRL+b、PageUp 向上一页 CTRL+d 向下半页 CTRL+f、PageDown 向下一页 H 移至窗口顶部 M 移至窗口中间 L 移至窗口末尾 G 移至文件最后一列 gg 移动到文件开头一列 nG 移动到第 n 行 (等同于命令“:n”) w 前移一个单词 b 后移一个单词 [{ 移到文件开始位置 ]} 移到文件结束位置 a 插入至光标前 A 插入至行首 i 插入至光标后 I 插入至行末 o 在当后行后新插入一行 O 在当前行后新插入一行 s 删除字符并插入 S 删除行并插入 r 替换字符 R 进入替换模式 cc 修改当前行 cl 修改当前字符 c$ 修改至行尾 fx 右移至第一个 x 字符上 tx 右移至第一个 x 字符前 x、DELETE 删除光标所在的字符 dw 删除光标所在的单词 d$ 从光标处开始删除至行尾 dd 删除当前行 dG 删除当前行到最后一行 ndd 连续删除 n 行 yw 将光标所在单词拷入剪贴板 y$ 将光标至行尾的字符拷入剪贴板 Y、yy 将当前行拷入剪贴板 yny 将当连续n行拷入剪贴板 p 将剪贴板中的内容粘贴在光标后 P 将剪贴板中的内容粘贴在光标前 CTRL-R 重做 u 撤销,相当于Ctrl+z U 一次撤销一行的所有操作 Z 推出 ZZ 退出帮助,回到编辑模式 /string 往前搜索 string【支持正则】 ?string 往后搜索 string * 往前查找当前 word # 往后查找当前 word /\ 只匹配 word,不匹配 wordxx 等 % 括号匹配 n 查找下一个 N 查找前一个 CTRL-v 可视化块模式 在常规模式下,按“:”键进入 命令模式,此时 Vim 窗口的最后一行会显示一个 “:” , 命令执行完后,Vi自动回到命令模式。 :q 不保存退出 :q! 不保存强制性退出 :w 保存编辑 :w filename 存入文件 filename 中 :w! filename 强制性存入文件 filename 中 :wq 保存退出 :wq! 强制保存然后退出 :args 显示当前文件名 :help 查看所有帮助 :help w 查看关于 w 的帮助 :set number 显示行号 :set nonumber 隐藏行号 :set rule 显示光标位置 :set ignorecase 搜索忽略大小写 :set noignorecase 搜索区分大小写 :ab str1 str2 如:ab abc abcdefg, 当输入 abc 然后输入空格, abc 自动变为 abcdefg :new filename 打开或新建文件 :set ruler 打开光标的行列位置显示功能 :set shiftwidth=4 设置自动缩进格数 :set autoindent 打开自动缩进功能 :set paste 粘贴的时候关闭自动缩进 :set nopaste 粘贴的时候打开自动缩进 启动 Vim : vim filename 打开或新建文件,并将光标置于第一行首 vim +n filename 打开文件,并将光标置于第n行首 vim + filename 打开文件,并将光标置于最后一行首 vim +/pattern filename 打开文件,并将光标置于第一个与pattern匹配的串处 vim -r filename 在上次正用vi编辑时发生系统崩溃,恢复filename vim filename.filename: 打开多个文件,依次进行编辑 vim + /word filename 进入vi并且由文件的word这个字开始
参考:
http://zh.wikipedia.org/wiki/Vim