Vim 编辑器


Vim 是从 vi 发展出来的一个文本编辑器,但是 vim 的官方网站 (http://www.vim.org) 自己说 vim 是一个程序开发工具而不是文字处理软件🤣。

这里不打算系统梳理 vim 的操作指令,记不住也没必要,只需要将一些高频操作的指令记住就好

三种模式

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。一张图描述三种模式的切换

光标移动(非常常用)

经常需要快速跳转到指定位置进行编辑,例如行尾、指定的某行、整个文本的末尾等。

shift+g:跳到文档最后一行 g:跳到文档第一行 0:跳到当前行首 $:跳到当前行尾 n <space>:光标向后移动 n 个字符,例如 20<space> 则光标会向后面移动 20 个字符距离 n<Enter>:光标向下移动 n 行

跳到指定行:命令模式(shift+冒号)输入 set nu 显示行号(set nonu 隐藏行号),然后命令模式直接输入行号即可跳转到指定行的首字母处

快速编辑(常用)

其实编辑一般就是先将光标移动到指定位置,然后进入编辑模式即可。下面是三个最常使用的进入编辑模式的指令

i, I 进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A 进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O 进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行; O 为在目前光标所在的上一行处输入新的一行!(常用)

搜索(常用)

/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word 向光标之上寻找一个字符串名称为 word 的字符串。
n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。

批量替换(常用)

推荐使用最后一种,gc 一边确认一边替换,避免搞错。

:n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

删除、复制与粘贴(非常常用)

  • dd:删除光标所在行,直接把行删除了。如果只想删除行内容 d$(☆☆☆)
  • ndd:删除光标向下的 n 行
  • d$:删除光标所在位置到改行行尾所有内容,同理 d0 删除光标到行首的所有内容(☆☆☆)
  • dG:删除光标到文档末尾的所有内容
  • yy:复制光标所在行,p将复制内容粘贴在下一行,P粘贴在上一行(☆☆☆☆)
  • nyy:复制光标所在的向下 n 行(☆☆☆)
  • y0:复制光标到行首内容,y$:复制到行尾内容,yG:复制光标到最后一行内容
  • u:复原前一个动作改动(☆☆☆☆☆)
  • 小数点:重复上一个动作

小窍门

在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

Copyright © jverson.com 2019 all right reserved,powered by Gitbook 16:25

results matching ""

    No results matching ""