vi/vim的基本使用总结

一直很喜欢原装的vi,但vi对比vim真心有些弱了,ctrl+v的虚拟光标选中操作只支持删除,并且还不支持批量添加替换啥的,以及自定义功能大大受限,还是装了vim,于是接触vim也就有两年了.

看网上的评论,vim的对头是Emacs,不过Emacs在Linux发行版中较少自带,哥也没碰过,哪天有兴趣就试试.

在vim中,有四种模式(即状态):

  • Command mode
  • Last line mode
  • Insert mode
  • Visual mode

在刚使用vim打开某文件时,vim处于Command mode,这时候,前往不要乱按键盘,这时候键盘的按键有不同的功能:

移动与进入Insert mode

  • h 光标左移
  • j 光标上移
  • k 光标下移
  • l 光标右移
  • e 光标跳跃到词尾(怎么分词,哥也不清楚)
  • b 光标回到上个词首
  • w 光标跳跃到下个词首
  • G 光标移动到文章尾部
  • 0 光标移动到文章开头
  • $ 移动到行尾
  • A 移动到行尾,并进入Insert mode
  • ^ 移动到行首
  • I 移动到行首,并进入Insert mode
  • o 在当前行下方插入空白行,并进入Insert mode
  • O 在当前行上方插入空白行,并进入Insert mode
  • i 在当前光标的字前进入Insert mode
  • a 在当前光标的字后进入Insert mode
  • 数字 + l 移动到行的指定的位置

删除

  • x 删除当前光标所在的字
  • X 删除当前光标所在前面的字
  • 数字 + x 删除当前光标及其后的指定字
  • 数字 + X 删除当前光标前的指定字
  • dd 删除光标所在行
  • 数字 + dd 删除光标开始往下的指定行

复制

  • yy 复制当前行到缓冲区
  • yw 复制当前光标所在的词到缓冲区中(哥也不知道什么确定一个词的.)
  • 数字 + yy 复制当前行及其往下的指定行数到缓冲区
  • 数字 + yw 复制当前光标与其之后指定数量的词到缓冲区中
  • p 将缓冲区的数据粘贴到当前光标位置.

翻页

  • ctrl + f 翻到下页
  • ctrl + b 翻回上页
  • ctrl + d 下翻半页
  • ctrl + u 上翻半页

替换

  • r 替换,按下r键后,再按一个你要的数字或字母或标点按键就能完成替换
  • R 替换光标所到之处的字符,直到按下Esc键为止,这个很强大。
  • u 即撤销
  • ctrl + r 即反撤销
  • ctrl + v 批量选择模式

进入last line mode

  • : 即shift+;进入 last line mode,可以执行相关的命令比如替换,修改编码之类的
  • / 进入last line mode 然后输入要查找的字符回车即可
  • ? 进入last line mode 然后输入要匹配的字符回车即可

保存

  • command mode + w 回车保存
  • command mode + wq 保存退出
  • command mode + wq! 强制保存退出
  • command mode + q 在未作改动的情况下,可以退出,不然会提示未保存.
  • command mode + q! 强制退出,不会保存修改
  • command mode + x 保存退出
  • ZZ 保存退出