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↓』即可。