背景
vi常用命令一文是之前用优快云缺省编辑器写的,现在习惯了Markdown,所以另开一文。——涉嫌灌水。。。
这里记录《vimbook-OPL.pdf》一文的学习笔记。全部以Windows下面的操作为例。
1. Basic Editing
vim和gvim
可以在cmd下面输入vim和gvim,两个命令的区别:
- vim: 在当前cmd窗口中开启vim编辑器(下面的黑图);
- gvim:另起一个窗口开启vim编辑器(下面的白图)。
下面是效果图(文不如表,表不如图,所以没事多贴图):
mode
两种模式:命令模式和插入模式。看vim窗口最下面一行可以知道当前是什么模式,如果不清楚,就Esc,就会回到命令模式。
编辑模式
插入字符 i (光标前)
在命令命令下,键入 i 就进入编辑模式了。此字母为insert之首字母,insert即为插入字符之意,插入即意味着编辑模式。这种插入是在当前光标所在字母的前面插入。
插入字符 a (光标后)
上面的i是在光标前面插入一个字符,只有这个还是不够的。想想,如果要在某一行的最后添加字符怎么办?当光标跑到最后的时候,i只会在光标位置的前面插入字符,永远没法在行尾写数据。
所以另有一个命令 a,意为append,在当前光标的后面追加字符。
删除字符 x
要删除当前光标位置的字符,就用字母 x。为什么用这个x呢?实际上就是叉叉。文中这么说的:
This is a throwback to the old days of the typewriter, when you deleted things by typing xxxx over them.
大致是说,古老的那种打字机,要删除东西的话,就在这些字符上xxxx。
删除整行 dd
上面的x是删除光标所在位置的一个字符。如果要删除(光标所在的)整行,就用dd命令。即在命令模式下,连续输入两个d。——d:delete。一个delete还不足以删除整行,所以delete delete,就两个d了。
移动光标 (hjkl)
在试着上面的操作的过程中,会发现需要让光标上下左右移动。对应的命令就是hjkl四个在键盘上紧挨着的字母。每个字母控制的方向如下:
从键盘上看,k和l在两边,所以分别向两边跑,h往左,l往右。剩下jk两个,j往下,k往上。——这里h和l好记忆,j和k混淆的话,就随便一个试试,就知道哪个往上哪个往下了,然后实际操作几次之后,想忘记就难了。
快速定位到行首和行尾 (0,$)
用前面的hjkl可以上下左右移动,但如果一行的内容很长,一个字符一个字符的往左往右移动是很低效的。所以,又有对应的两个命令:
- 0(数字0):将光标移动到行首
- $(shift+数字4):将光标移动到行尾
新启一行 o, O
上面将光标移动到行首是数字0,一个接近的字符自然是字母o了;进一步分为小写字母o和大写字母O。
想象一下,在输入的时候,希望另起一行输入文本;而这个时候光标并不在行尾,比如在当前行的中间或前面。然后怎么另起一个新行来输入呢?变通方法:
- $: 光标跳到当前行的最后;
- a: 变成编辑模式,此时光标在行尾;
- <\Enter>:回车,这是就看到vim新开启了一个新行。
以上三步还是麻烦的,所以vim作者提供了一个命令,或者说一个字母搞定以上三步,这就是字母o。
当然,这里的小写字母o是往下另起一行。如果要往上另起一行呢?就是大写字母O了。