文章更新
- 20160602-初次成文
- 20160607-调整了格式,加入一个VIM小游戏
- 20160831-格式调整,丰富内容
VIM常用命令
Insert(插入)模式
这个模式就是常用的打字的地方,嗯,就是这样。
进入
- i -> 在光标前插入
- I -> 在句首插入
- a -> 在光标后插入
- A -> 在句尾插入
离开
- Esc
- Ctrl + c
- Ctrl + [
Normal模式
进入vim时候的默认模式,在这个模式下可以随意使用命令
简单移动
- h j k l -> 左 下 上 右
- 0(数字零) -> 移动光标到行头
- $ -> 移动光标到行尾
- gg -> 到第一行
- G -> 到最后一行
- w -> 到下一个单词的开头。
- e -> 到下一个单词的结尾。
简单操作
- dd -> 剪切当前行
- yy -> 赋值当前行
- p -> 粘贴
- u -> 撤销
- . -> 上次命令的重复
命令的组合
- daw -> 删除当前单词
- 2dd -> 删除包含当前行在内的2行
- 3p -> 粘贴文本3次
- 100idesu [ESC] → 会写下 “desu” 100次
- 0y$ -> 从行头拷贝到本行最后一个字符
visual模式
进入
- v -> 连续选择模式
- V -> 连续行选择模式
v从当前字符开始选,以后每次选中一行,但第一次选择的是从当前字符开始的行。而V从当前行开始选择,直到光标结束之处。
- Ctrl + v -> 块选择模式,比如可以在多行之前的某个未知,插入注释
块选择 Ctrl+v 在表格中删除指定列非常有用
离开
- Esc
- Ctrl + c
- Ctrl + [
> 和 <
将选中字符右移或左移 shiftwidth位置
d 与 D 的区别
d只删除选中的字符,而D删除选中字符所在行的所有字符,c和C,y和Y同理
select模式(选择模式)
进入
- gh
- gH
- g(Ctrl + h)
切换
- Ctrl + o -> 临时切换到可视化模式执行一个命令
- Ctrl + g -> 切换到可视化模式
光标移动
- fx -> 移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
- tx -> 和上面的命令类似,但是是移动到 x 的左边一个位置。
- Fx -> 和 fx 类似,不过是往回找。
- w -> 光标往前移动一个词。
- b -> 光标往后移动一个词。
- 0 -> 移动光标到当前行首。
- ^ -> 移动光标到当前行的第一个字母位置。
- $ -> 移动光标到行尾。
- ) -> 移动光标到下一个句子。
- ( -> 移动光标到上一个句子
替换
- :s/hello/world 替换当前行中第一个hello为world
- :%s/hello/world 替换每一行中第一个hello为world
- :s/hello/world/g 替换当前行中所有的hello为world
- :%s/hello/world/g 替换每一行中所有的hello为world
- :%s/hello/world/gc 找到当前文件中所有的hello,并逐一询问用户是否要替换
内容提取
- :r !date 将当前时间插入到当前文件
- :r /path/to/src.file 将src.file里的内容输出到当前文件
解决vi/vim中粘贴会在行首多很多缩进和空格的问题
在拷贝前输入:set paste (这样的话,vim就不会启动自动缩进,而只是纯拷贝粘贴),然后输入i,再进行黏贴,就不会有格式错乱的问题了。
拷贝完成之后,输入:set nopaste (关闭paste)
总结
VIM的命令甚多,组合也很多,记忆是不能长时间记住的。唯一的捷径就是多多使用,用的多了,使用这些命令时就像手拿筷子一样,变成了本能。