开始
(1)新建文件 helloworld
$ vim helloworld
然后我们会进入一个新的界面,并且左下角会有 "helloworld" [New File]
的字样,现在我们在文件中处于 normal
模式下。
首先声明,现在 helloworld
还并没有保存在硬盘中,我只是“打开”了一个叫 helloworld
的文件。
(2)输入信息
按下 i
键进入 insert
模式,左下角会显示 -- INSERT --
的字样,继续输入文字 Hello World
,随后按下 <esc>
(就是键盘左上角的退出键)返回到 normal
模式,同时你会看到屏幕左下角的变化。
(3)退出 Vim
按下 :
键进入 command
模式,输入 w
然后按下回车键,左下角会显示 "helloworld" 1L, 12C written
的字样,代表我们已经把文本保存到硬盘上了,然后再次输入 :q
就会退出编辑器,连续操作也可以输入 :wq
来保存并退出。然后你可以查看刚编辑的文件
$ cat helloworld
Hello World
先不要管里面提到这个模式那种模式,先照做,如果你顺利的完成上述的操作,那先给自己鼓个掌,不要惊讶,你已经做到了 100 万人都没做到的事,毕竟 Stack Overflow 也骄傲的宣称“我们已经帮助一百万人成功的退出了 Vim”
01 键位操作
光标操作
只靠前面这点知识,我们仍然需要鼠标协助完成很多操作,并且可能还完成不好,接下来我们需要了解一些键盘移动光标的操作。
我们先下载一个文本用作练习
$ wget http://grepcode.com/file_/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/Object.java/\?v\=source -O Object.java
$ vim Object.java
在 Vim 中光标操作基本都是在 normal
模式下完成的,如果你有时候搞不清,那就多按几次 <esc>
键。
上下左右
h, j, k, l
四个键代表了方向键 ← ↓ ↑ →
,这个键位是我们前期经常用到的。在开始你会感觉非常别扭,为什么有了方向键还要这四个键位?想想你在键入信息后手挪到方向键,再挪回来的操作,每天的开发都会如此反复个几百次,节约掉这个时间,就是 Vim 高效的第一步。
另外借助数字键可以更快的做到光标跳转,5l
表示向右移动 5 个字符,5j
表示向下移动 5 行,其他依次类推
翻页
<ctrl> + f
的组合键可以向下翻一页,这类的组合键以后我会用 <c-f>
形式表示。
<c-f> " 向下移动一页
<c-d> " 向下移动半页
<c-b> " 向上移动一页
<c-u> " 向上移动半页
以上四个键位在翻页时会经常使用,但是刚入门的话,我还是不建议你全部记住,只记住翻半页或一页的两个键位,在配合 j, k
精确到目标行就可以了,在入门阶段你要尽量减少快捷键的记忆量,在大量刻意练习并熟能生巧后,再去扩展快捷键。
行首行尾
0 " 快速跳到行首
$ " 快速跳到行尾
g_ " 快速跳到行尾最后一个非空字符(下一章我们会讨论它跟 $ 的区别)
在熟练应用 h, j, k, l
四个键位后,配合这两个键位可以让你几行之内的光标操作更加灵活
页头页尾
gg " 快速跳到第一行
G " 快速跳到最后一行
拿 Object.java
这个文本为例,如果你想马上去看最后几行写的是什么,你一定不想按不知道多少次的 <c-f>
组合键,但是如你所试,只需要 G
就可以了。
现在我们已经学到了很多键位操作,我真诚的希望你能先花上几个小时的时间去练习它,最好是在一个你真正需要编辑的文档上来使用,将光标移动到需要输入的位置,i
进入 insert
模式,完毕后 <esc>
返回 normal
模式,如此反复,在这个过程中,你一定会有这样的想法,还不够,这些还不够,我还需要更快捷的东西,比如,搜索。
参考