你需要知道的最低限度的 vi(m) 知识
Vim 或 vi 是一种命令行文本编辑器。可以说,它能做很多事。
有人会说,太多了。就像一个老笑话说的那样,你可以一边靠在键盘上,一边使用这个该死的东西,无论你敲到什么,它都会有实际意义。
我个人并不拥护 vim 作为我的首选文本编辑器。
不过,在命令行中拥有一个功能适中的文本编辑器还是非常有益的。无论你是想使用 git,还是必须通过 ssh 登录服务器并编辑某些内容,甚至在某些情况下使用数据库也会变得更容易。
本文并非关于 vim 或 vi 的完整教程。毕竟网上已经有很多 “速查表 “了。
但如果你看过其中的一些,就会发现它们看起来很吓人,让人不知所措。
本文的目的是教你一些非常基础的东西。这样,当你想学习更高级的操作时,你就可以使用 vim,也不会感到那么不知所措了。
VI 与 VIM
在本文中,vi 和 vim 没有区别。
vim 是 “vi 改进版 “的缩写,它在 vi 的基础上增加了许多功能,如代码高亮等,但这些功能与我们无关,我们只想知道最基本的功能。
在本文的其余部分,我将使用 vim,因为我预计你的大多数机器都会自带 vim,但如果你的环境只有 vi,那就使用它吧。
使用 vim
图 1:可视化的 vim 基本命令
Vim 模式
我保证图 1 看上去比实际更吓人。
简而言之,vim 有三种模式:
- 普通模式,通过按快捷键输入指令
- 插入模式,你可以在文件中实际输入指令
- 命令模式,在此模式下执行键入的命令
第一次进入 vim 时,它处于 “普通模式”。这不是你可以键入的模式,这也是大多数初次使用 vim 的用户会感到困惑的地方。
a
和 A
是两个不同的命令,i
和 I
、p
和 P
等也是如此。
移动光标
您可以在文件中移动光标。方向键很有用,但还有其他一些组合键可以跳转到特定位置。
我认为最有用的组合键是 gg
和 G
,可分别跳转到文件的第一行和最后一行。
输入
您可以通过按某些键从普通模式切换到编辑模式,例如按 i
键可以从光标所在的位置开始打字,按 A
键可以从光标所在行的末尾开始打字。
在编辑模式下,按下 ESC 键即可返回正常模式。
撤销和重做
在普通模式中:
u
– 撤销CTRL+r
– 重做
很简单。
保存
要从普通模式切换到命令模式,请按:(然后用 ESC 或 CTRL+c 返回正常模式)。
在命令模式下,键入命令,然后用回车确认。
您需要知道的命令有
- :w 保存文件,但保留在 vim 中
- :wq 保存文件并退出 vim
- :cq 不保存文件,并提示错误退出 vim
例如,最后一种方法在使用 git 时非常有用。比方说,你正在交互式地重新编译,发现在重新编译之前忘了做什么,这时 :cq
会带着提示错误退出 vim,并取消 git rebase
命令。
剪切和粘贴
从技术上讲,我们可以说你知道如何在文档中移动,知道如何编辑文档,知道如何保存或放弃更改。这已经是 “最基本的 “了。
不过,我还是忍不住要告诉你我最喜欢的 vim 功能:剪切和粘贴。
dd
剪切一行dw
剪切一个单词p
和P
会将剪切的内容再次粘贴到光标之前/之后
我为什么这么喜欢这个功能呢?
在使用 git 的过程中,我经常进行重置,而且总是以交互方式进行。
例如,如果我需要把第一个单词 “pick
“改成 “e “,我可以把光标放在该行上,然后点击
dw
– 删除单词 picki
– 进入编辑模式e
-(包括空格)在提交哈希值前面输入编辑指令ESC
– 返回正常模式
这非常快捷。使用几次后,就会很自然了。
或者,如果我需要从 rebase 待办事项列表中移除一个提交,只需简单的
dd
– 删除该行
就可以了。
如果我想重新排列行,可以使用 p
或 P
将该行添加到我选择的位置。
搜索
搜索功能并非 “最基本”,但也是一项非常有用的基本功能。
在普通模式下,按”/
“键进入搜索。
然后输入要搜索的内容,并用回车确认。
从技术上讲,您仍处于正常模式,但现在可以使用 n
和 N
分别跳转到搜索模式的下一个和上一个出现点。
默认情况下,搜索是区分大小写的。命令
:set ic
– 使搜索忽略大小写:set noic
– 使搜索不忽略大小写
对于更高级的用户,regex 搜索是通过将 regex 包装成 \v(...)
来实现的,例如,要查找一个四位数字,可以输入
/\v(\d{4})
本文文字及图片出自 The minimum vi(m) you need to know