title: Vim常用快捷键
date: 2018-11-27 12:49:03
tags: shortcut

categories: Vim

Vim按键说明

注意:按钮是大小写分明的,字母大写或小写具有不同的功能。

在描述快捷键之前,先描述一下这三种模式,因为这个能更好的理解相应的快捷键。

vim三种模式简述

  • 一般模式

    • 这个模式就是用键盘快捷键的模式 (最重要的一个模式)
  • 编辑模式

    • 这个模式就是在一般模式下,按下了i,o..(注:大小写都行,效果相反)其中一个键之后,进入可以编辑的模式
  • 命令行模式

    • 一般模式下,按下 “/”或者 “:” 之类的,在编辑器的最底层会有一行显示,也再此操作

注意:只有一般模式可以与编辑或者命令行模式切换,编辑模式和命令行模式是不可以切换

第一部分:一般模式下的按键说明

在一般模式下可用的按钮说明,光标移动,复制粘贴,查找替换等

移动光标的方法

  • h或左键头

    • 向左移动一个字符
  • j或下箭头

    • 向下移动一个字符
  • k或上箭头

    • 向上移动一个字符
  • l或右箭头

    • 向右移动一个字符

技巧提示:
如果想要进行多次移动的话

(列如:向下移动30行)

可以使用30j 或者 30下箭头

  • ctrl + f

    • 向下翻一页
  • ctrl + b

    • 向上翻一页
  • +

    • 光标移动到非空格符的下一行
  • -

    • 光标移动到非空格符的上一行
  • n\

    • n表示数字,后面是空格,例如20\,光标会想后面移动20个字符距离
  • 0或功能键【Home】

    • 这是数字0,移动到这一行的最前面字符处
  • $或功能键【End】

    • 移动到这一行的最后面字符处
  • H

    • 光标移动到这个屏幕的最上方那一行的一个字符
  • M

    • 光标移动到这个屏幕的中央那一行的第一个字符
  • L

    • 光标移动到这个屏幕的最下方那一行的第一个字符
  • G

    • 光标移动这个文件的最后一行
  • nG

    • n为数字,移动到这个文件的第n行 //可以配合:set nu (显示行号)
  • gg

    • 移动到这个文件的第一行 ,相当于1G
  • N【Enter】

    • N为数字,光标向下移动n行

查找与替换

  • /word

    • 向下寻找一个名称为word的字符串
  • ?word

    • 向上寻找一个名称为word的字符串
  • n

    • 代表重复前一个操作。比如查找了一个word,又点击了一次,就是查找下一个word
  • N

    • 相反的,向上查找word

技巧小提示:

使用/word配合n或者N是非常有帮助的,可以查找重复的关键字

  • n1,n2s/word1/word2/g

    • n1,n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2.
  • :1,$s/word1/word2/g

    • 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
  • :1,$s/word1/word2/gc

    • 和上面一样,只是多了一步,替换前显示提示字符给用户确认(confirm)是否需要替换

删除,复制与粘贴

  • x,X

    • 在一行字当中,x为向后删除一个字符(相当于[Del]键),X为向前删除一个字符(相当于[Backspace])
  • nx

    • n为数字,向后删除n个字符
  • dd

    • 删除光标所在的整行
  • ndd

    • n为数字,删除光标所在的向下n行
  • d1G

    • 删除光标所在到第一行的所有数据
  • dG

    • 删除光标所在到最后一行的所有数据
  • d$

    • 删除从光标所在处到该行的最后一个字符
  • d0

    • 删除从光标所在处到该行的最前面的一个字符
  • yy

    • 复制光标所在的哪一行
  • nyy

    • n为数字,复制光标所在的向下n行
  • y1G

    • 复制光标所在行到第一行的所有数据
  • yG

    • 复制光标所在行到最后一行的所有数据
  • y0

    • 复制光标所在的那个字符到该行行首的所有数据
  • y$

    • 复制光标所在的那个字符到该行行尾的所有数据
  • p,P

    • p为将已复制的数据在光标下一行粘贴,P则为粘贴在光标上一行
  • J

    • 将光标所在行与下一行的数据结合成同一行
  • u

    • 复原前一个操作
  • ctrl + r

    • 重做上一个操作
  • .

    • 不要怀疑。这就是小数点。意思是重复前一个操作的意思。如果你想要重复删除,重复粘贴等。

第二部分:一般模式切换编辑模式

进入插入或替换的编辑模式

  • i,I

    • 进入插入模式(insert mode)
    • i为从目前光标处插入,I为在目前所在行的第一个非空格符处开始插入
  • a,A

    • 进入插入模式(insert mode)
    • a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符处开始插入
  • o,O

    • 进入插入模式(insert mode)
    • o为在目前光标的所在的下一行处插入新的一行;O为在目前光标所在处的上一行插入新的一行。
  • r,R

    • 进入替换模式 (Replace mode)
    • r只会替换光标所在的哪一个字符一次;R会一直替换光标所在的文字,直到按下【Esc】键为止

注意:上面这些按键中,在vi界面的左下角会出现“–INSERT–”或“–REPLEACE”的字样。如果我们想要在文件中输入字符时,也就是在编辑模式中,一定会有上述这两种提示。

  • [Esc]

    • 退出编辑模式,回到一般模式中;

第三部分:一般模式切换到命令行模式

命令行的保存、离开等命令

  • :w

    • 将编辑的数据写入硬盘文件中
  • :q

    • 离开vi
  • :q!

    • 若曾经修改过文件,又不想存储,使用“!”为强制离开不保存文件

注意:感叹号(!),在vi中经常都是强制的意思

  • :wq

    • 保存后离开
  • :w[fileName]

    • 将编辑的数据保存成另一个文件(类似于另存为)
  • :! command

    • 暂时离开vi到命令行模式下执行command的显示结果
  • :set nu

    • 显示行号,设置之后,会在每一行的前缀显示该行的行号

注意:在vi中,数字是很有意义的,数字通常代表重复做几次的意思,也有可能是代表去到第几个什么什么的意思。

例如:要删除50行, 50dd
向下移动30行, 30j