姓名:张志文 学号:19021210649
【嵌牛导读】
vim是一种很好用的编辑器,今天来介绍一下vim的入门
【嵌牛鼻子】
vim
【嵌牛提问】
vim该如何入门呢?
【嵌牛正文】
理准备
学习任何一门技能都会存在学习曲线,不同的技能学习曲线不尽相同,不过学习 vim 的朋友,看着下面这个 90° 的学习曲线,可能需要喝杯 82 年的咖啡压压惊 。
不过,毛主席都说过,任何敌人都是纸老虎
,所以我们对于学习 vim 在做好充分心理准备的情况下,也没必要太打消自己的信心,小时候我们学卖油翁时也学过最朴素的道理:无他,但手熟尔
,只要训练充分得当,我们也可以像卖油翁将油轻松倒过铜钱般掌握好 vim,所以,我们做好了玩 hard 模式的心理准备就可以上路啦。
小试牛刀
磨刀霍霍
要把玩 vim 首先要进入到 vim 的normal模式
,才能拿到它那把锋利的道具,进入normal
模式的方式有两个,一个是按住esc
键,一个是按住ctrl+[
键。
手柄移动
玩过电脑游戏的朋友们应该都有这样的经历,需要控制游戏人物上下左右移动,一般是 wasd
,vim 也一样,假设我们使用 vim 来阅读源码,这种场景一般会使用normal
模式,在normal模式
下对应上下左右的快捷键分别是kjhl
,这是使用 vim 时最基本的快捷键,是不是特别容易?另外我们在浏览代码时,下移一行的需求基本是最频繁的,所以这里猜测 vim 把j
键用作下移,另外j
键上有一个小突起特别适合快速起步,从这里看出 vim 的键设置其实是非常人性化的。
砍瓜切菜
很多时候我们在写完初版程序,做自我代码 review 时,经常会有删除一行或者多行的需求,如果我们使用notepad
或者sublime
类似的文本编辑器,需要先选中多行然后按退格键做删除,在使用 vim 时,我们只要保证我们在normal
模式下,连续敲击dd
键,即可删除当前光标所处的行,d2d
即可删除当前行和其下一行,这样简单推理dnd
就可以删除从当前行往下的n-1
行啦,是不是很方便很简单?
落地为安
在我们阅读完代码,做了相应删除和编辑之后,最不能忘记的事情就是实时保存了,不然遇到断电或者系统崩溃就白瞎了,和其他编辑器使用meta+s
键保存不一样,vim 需要进入命令行模式,进入命令模式的前提是处在normal
模式,在normal
模式下敲击:
,然后编辑器下方就会出现一个类似终端的小窗口,输入w
即可保存,如果想要保存后立马关闭当前文档,输入x
或者wq
即可。
这样我们就完成了 vim 三步走,浏览-->编辑--->保存,怎么样,是不是就和玩了一个小游戏一局一般,看起来难度也没 90° 那么大嘛。
高级特性
上面一节我们讲了我们平时使用文本编辑器的基本三步,现在我们来看看 vim 为什么被称为编辑器之神,它到底有哪些奇淫技巧,操作如此之强。
移动
在一般文本编辑器中移动是一件非常痛苦的事情,比如上下左右这种最基本的移动,我们要离开我们的打字区域,手指跑到键盘的右下角按上下左右键来移动,这无疑会让我们离开我们我们的舒适区。
但是,在 vim 的normal模式
下移动是一个非常有趣的事情,通过 vim 提供的预设快捷键,我们可以在舒适区快速方便的移动,完全停不下来。
在列出 vim 的移动快捷键之前,我们先来普及一下几个基本的概念:
-
层次
:字母-->单词-->句子-->段落-->函数-->文档; -
首尾
:单词首部-->单词尾部-->行首-->行尾-->段落首部-->段落尾部-->文档首部-->文档尾部;
与这些概念对应的在 vim 中移动的快捷键分别是:
- 字母级别移动:参阅小试牛刀中 vim 手柄的快捷键
上(k)下(j)左(h)右(l)
; - 单词级别移动:下一个单词首部(
w
),下一个单词尾部(e
),上一个单词头部(b
),上一个单词尾部(ge
); - 行级别移动:行首(
0
或者^
)、行尾($
); - 段落级别移动:段落首部(
{
),段落尾部(}
); - 文档级别移动:文档头部(
gg
),文档尾部(G
);
编辑
删除
删除单词以及以上层次一般是一个组合键:d+级别键
;
- 删除字符:删除光标前字符(
X
),删除光标后字符(x
); - 删除单词:删除下一个单词(
dw
),删除前一个单词(db
); - 删除行:删除当前行
dd
,删除当前行和下一行(dj
),删除当前行和上一行(dk
); - 删除段落:删除光标后段落(
d}
),删除光标前段落(d{
); - 删除文档:删除光标前文档(
dgg
),删除光标后文档(dG
);
其他
- 撤销:
u
(undo); - 重做:
ctrl+r
(redo); - 复制:复制也类似删除,是组合键,格式为:
y+级别键
(yank); - 粘贴:
p
和P
(paste);
快速重复
动作+次数+方向
在熟悉了以上浏览和编辑的大部分快捷键后,使用 vim 的快速重复模式可以加速你的操作。
比如浏览代码时你想快速向下移动 4 行,删除时想快速向右删除 3 个单词,如果你只会上面的基础快捷键,那么你还是得重复多次,对于追求高效编码的你来说,是不能接受的。
vim 提供了一套模式:动作+次数+方向
,其中动作
可选,对于刚刚的需求来说,只需要使用4j
和d3w
即可完成需求,是不是非常快捷,快来试试吧!
搜索/替换
一般我们在定位问题时会使用搜索,在重构时会使用到替换。
vim 也提供了强大的搜索/替换功能,并且支持正则搜索和正则替换,灰常强大。
使用 vim 的搜索和替换,我们需要从 vim 的normal
模式进入到命令模式,在normal
模式下按:
即可进入命令行模式。
- 搜索:
/key
(向下搜索关键词 key)或者?key
(向上搜索关键词 key); - 替换:
%s/source/dest/g
或者1,10s/source/dest
,其中%s
表示全文替换,1,10s
表示只对 1-10 行做替换,source
表示被替换的单词,dest
表示要被替换的单词,g
表示该行若命中多个关键词则会都替换; - 正则替换:这算是 vim 替换里面比较高级的功能,下面我们来演示一个例子,把文中的
morningking hello
都替换成hello morningking
,我们需要敲入:%s/\(hello\) \(morningking\)/\2 \1/g
,这里使用到了正则里面的捕获分组,是不是很强大?
文件操作
vim 也提供了文件操作,如保存,退出,放弃,前提也是需要进入命令行模式。
- 保存:
w
; - 退出:
q
; - 放弃:
q!
其中保存退出可以结合使用,如
wq
,当然也可以使用快捷键x
一键保存退出
其他
限于篇幅,以上列出了 vim 常用的高级特性,当然,vim 的高级特性远不止如此,比如还可以使用宏、折叠、选择模式、分屏、书签、缓冲区等,不过由于不太常用,这里暂时先不一一列举
本文内容为转载,版权归作者所有