Skip to content

Latest commit

 

History

History
144 lines (102 loc) · 5.03 KB

Vim使用教程.md

File metadata and controls

144 lines (102 loc) · 5.03 KB

Vim使用教程

Better, Stronger, Faster

首先Vim有两种模式:

  • Normal
    该模式下不能写入,修改要在该模式进行。在Insert模式中可以使用ESC键来返回到Normal模式。
  • Insert
    该模式下可以进行写入。在Normal模式下使用按i键进行Insert模式。

下面说一下Normal状态下的一些命令,所有的命令都要在Normal状态下执行:

进入Insert模式

  • i 进入insert模式
  • a(append) 在光标后进行插入,直接进入insert模式
  • o(open a line below) 在当前行后插入一个新行,直接进入insert模式
  • O 大写的O是在光标所在的行下面插入一个新航,直接进入编译模式
  • I 从该行的最前面开始编辑
  • A 从该行的最后面开始编辑
  • s 删除光标后的字符,从光标当前位置插入
  • S 删除光标所在当前行,从行首插入
  • cw 替换从光标位置开始到该单词结束位置的所有字符,直接进入Insert模式

在VIM中,有相当一部分命令可以扩展为3部分:

  • 开头的部分是一个数字,代表重复次数;
  • 中间的部分是命令;
  • 最后的部分,代表命令的对象。

比如,命令3de中,3表示执行3次,d是删除命令,e表示从当前位置到单词的末尾。整条命令的意思就是,从当前位置向后,删除3个单词。类似的,命令3ce表示从当前位置向后,删除三个单词,然后进入编辑模式。

可以看到,命令组合的前两个部分比较简单,但第三个部分也就是命令对象,技巧就比较多了。所以接下来,我就与你详细介绍下到底有哪些命令对象可以使用。

其实,对命令对象并没有一个完整的分类。但我根据经验,将其总结为光标移动命令和文本对象两种。

第一种是光标移动命令。比如,$命令是移动光标到本行末尾,那么d$就表示删除到本行末尾;再比如,4}表示向下移动4个由空行隔开的段落,那么d4}就是删除这4个段落。

移动光标

  • h 左移

  • j 移到下一行

  • k 移到上一行

  • l 右移

  • gg 移动到文章的开头

  • G 移动到当前文章的最后。

  • $ $光标移动当前行尾

  • 0 数字0光标移动当前行首

  • e 向右移动一个单词

  • w 向右移动一个单词,与e的区别是w是把光标放到下一个单词的开头,而e是把光标放到这一个单词的结尾。

  • b 移动到单词开始位置

  • :59 移动到59行

  • #l 移动光标到该行第#个字的位置,如5l

  • ctrl+g 列出当前光标所在行的行号等信息

  • : # 如输入: 15会跳到文章的第15行

  • ctrl+b:向上滚动一屏

  • ctrl+f:向下滚动一屏

  • ctrl+u:向上滚动半屏

  • ctrl+d:向下滚动半屏

删除文字

  • x 删除光标所在位置的一个字符
  • #x 删除光标所在位置后的#个字符,如6x就是删除后面的6个字符。
  • X 大写的X为删除光标所在位置前的一个字符
  • #X 删除光标所在位置前的#个字符
  • dd 删除当前行,并把删除的行存到剪贴板中
  • #dd 从光标所在行开始删除#行。如5dd就是删除5行
  • v/ctrl+v: 使用h、j、k、l移动选择内容,然后按d删除。其中v是非列模式,ctrl+v是列模式

复制粘贴

  • yy 拷贝当前行

  • #yy 拷贝当前所在行往下的#行文字

  • yw 复制当前光标所在位置到字尾处的位置

  • #yw 复制当前光标所在位置往后#个字

  • y$ 拷贝光标至本行结束位置

  • y 拷贝选中部分,在Normal模式下按v会进入到可视化模式,这时候可以上下移动进行选中某一部分,然后按y就可以复制了。

  • p 在光标所在的位置向下开辟一行,粘贴

  • P 在光标所在的位置向上开辟一行,粘贴

  • 剪切: 按dd或者ndd删除,将删除的行保存到剪贴板中,然后按p/P就可以粘贴了。

替换

  • r 替换光标所在处的字符
  • R 替换光标所到之处的字符,直到按下esc键为止
  • :%s/old/new/gnew替换文件中所有的old
  • :%s/old/new/gc,同上,但是每次替换需要用户确认
  • :s/old/new/g 光标所在行的所有old替换为new
  • :s/old/new/ 光标所在行的第一个old替换为new

撤销

  • u 撤销、回退
  • ctrl + r 恢复刚才的撤销操作

搜索

  • /关键字 先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止。

  • ?关键字 同上,只不过?是往上查找

缩进缩出

  • >> 当前行缩进

  • #>> 当前光标下n行缩进

  • << 当前行缩出

  • #<< 当前光标下n行缩出

  • : set nu 会在文件每一行前面显示行号

  • :wq 保存并退出

  • :w 保存

  • :q! 退出不保存

  • :saveas <pat> 另存为

  • :e filename 打开文件

  • `:sav filename 保存为某文件名

  • ZZ: 命令模式使用大写ZZ直接保存并退出