Vim文本编辑器的使用
相对于windows里面记事本,vim简直是太强大了,其玩法可以说千变万化,初学者如果想在有限时间内把它所有的功能都弄清楚,几乎是不可能完成的任务!所以,我们通过先快速上手,然后再介绍进阶功能的两步走方法来学习vim!
一、快速上手vim
先创建一个文档file1,如图2所示。
图2 创建1个名为file1的文档
创建并打开文档后,默认进入的是Vim编辑器的普通模式。在这个模式下我们不能输入文字。
图3 文档file1被创建并处于普通模式
按”i”键进入到INSERT模式(插入模式)即可录入文字,如图4所示。
图4 进入INSERT模式
进入插入模式后,输入文本内容,如图5所示。
图5 输入文字
文档编写完毕,敲击键盘的Esc键从输入模式返回到普通模式,如图6所示。
图6 返回到普通模式
在普通模式下,输入冒号“:”,进入命令模式,此时光标移动到冒号后,等待我们输入命令,如图7所示。
图7 进入到命令模式
在命令模式下,我们输入“wq”,然后回车,vim编辑器将会保存我们输入的内存并退回到命令行界面,如图8、9所示。
图8 输入保存并退出命令
图9 回到命令行界面
这样,我们经历了一个将文档创建、录入文字并保存的完整过程。在此过程中,我们要注意vim编辑器随着我们的操作在三种不同的模式间进行切换,现在对这三种模式进行归纳,如表1所示:
模式名称 |
功能 |
如何进入 |
普通模式 |
浏览、编辑文档(如复制、删除等) |
按ESC键 |
插入(INSERT)模式 |
录入文字 |
按i、o、a、I、O、A等键 |
命令模式 |
执行保存、退出、查找等命令,也可执行外部命令。 |
输入“:”、“/”、“?”等符号 |
表1 vim三大模式
除了上述表格中的三大模式外,vim还有别的模式,有兴趣的同学可以到网上探索以掌握更多的模式。学习重于观察,建议大家重点观察图2-8中图片底部文字的变化,在vim编辑器的最后一行,我们可以看作是MS Word中的状态栏,当我们处于不同模式时,此“状态栏”也会有相应的变化,提示我们处于什么状态,可以做什么操作。
二、vim进阶
1. vim也有多视窗
vim可以进行多窗口编辑,我们先打开上一节的文档file1,如果看到图10中一样出现若干提示,如果需要恢复之前的版本,可以按r键。此处我们按e键即可对file1的最近版本进行编辑。
图10 再次打开file1的提示界面
进入file1后,在普通模式里输入:进入到命令模式,然后输入sp file1.1并回车,vim将会创建一个新的文件file1.1并为之打开一个新的横向窗格,如图11所示。
图11 上下两个窗格呈横向显示的界面
再次输入:进入到命令模式,然后输入vsp file1.2并回车,vim将会创建一个新的文件file1.2并为之打开一个新的窗格,因为我们这次使用的命令是vsp,所以新出现的窗格与原来file1.1的窗格呈纵向并列显示。至此,我们总共就可以看到三个窗格,可以分别对file1、file1.1、file1.2进行处理,如图12所示。
图12 三个窗格同时显示的界面
打开多个窗格之后,剩下的问题就是如何灵活自如地在这些窗格之间移动变换,此时我们需要使用一个快捷键组合Ctrl+w,当我们在普通模式下按Ctrl+w后,会看到最下面的“状态栏”出现了一个“^W”的状态标记,这表示我们进入了窗格操作模式,如图13所示。
图13 窗格操作模式的界面
进入窗格操作模式后,我们只需按w键,就会发现光标移到了另外的窗格,然后就可以对该文件进行操作了。现在我们反复使用Ctrl+w然后再按w的方法把光标切换回file1。然后我们再来一次操作,先使用快捷键Ctrl+w进入窗格操作模式,然后按L——注意是大写哦!之后,我们将看到如图14的效果。
图14 窗格呈并列显示的界面
至此,我们发现了窗格操作的一些小窍门,那就是在普通模式下按组合键Ctrl+w进行入到如图13所示的模式,然后再发出一个操作指令(其实就是输入一个英文字母,注意大小写是不同的),就可以对窗格进行操作了。至于什么操作指令可以达到什么样的效果,大家可以参考表2:
操作指令 |
效果 |
w |
把光标移到另一个窗格 |
j |
把光标移到上面的窗格 |
k |
把光标移到下面的窗格 |
h |
把光标移到左边的窗格 |
l |
把光标移到右边的窗格 |
J |
将当前窗格移至下方 |
K |
将当前窗格移至上方 |
H |
将当前窗格移至左方 |
L |
将当前窗格移至右方 |
s |
将当前窗格分割成两个水平的窗格 |
v |
将当前窗格分割成两个垂直的窗格 |
q |
关闭分割出来的视窗 |
表2 vim多窗口操作指令
2. 常规编辑操作——插入
vim编辑器提供了多种插入操作,这些操作都是从普通模式输入特定的指令字符进入插入模式,之后就可以录入文字了。在第1节快速上手部分,我们仅仅用了一个常规的插入指令字符“i”,除“i”外,还有别的插入指令字符,如表3所示:
操作指令 |
效果 |
i |
在当前光标位置前插入 |
a |
在当前光标位置后插入 |
I |
光标移到行首并插入 |
A |
光标移到行末并插入 |
O |
在当前行之前插入一个空行 |
o |
在当前行之后插入一个空行 |
c^ |
把当前光标至行首的字符删除并插入 |
c$ |
把当前光标至行尾的字符删除并插入 |
cb |
把当前光标至所在单词词首的字符删除并插入 |
cw |
把当前光标至所在单词词尾的字符删除并插入 |
cc |
删除当前行并插入 |
ck |
删除当前行与上一行并插入 |
cj |
删除当前行与下一行并插入 |
cH |
删除当前行到首行并插入 |
cG |
删除当前行到末行并插入 |
表3 vim插入的操作指令——必须在普通模式下执行
3. 常规编辑操作——删除
在表3的后半部分2个字符的指令其实已经包含了删除的操作,只是那些操作的目的不是删除,而是为了进入插入模式而顺便进行删除。本小节,我们学习专门的删除操作,专门的删除操作都离不开指令字符“d”、”D“,最”顺手“的删除操作当属连按两次”d“键——删除当前行。如果要删除连续几行,则须佩以数字,如3d的作用是删除当前及其后的三行。需要说明的是,我们输入3d后,vim编辑器不会像之前一样立即执行指令,我们还须按回车键确认。表4列出了删除的常规操作。
操作指令 |
效果 |
x |
删除光标所在字符——相当于删除Delete键 |
X |
删除光标前的字符——相当于退格Backspace键 |
dd |
删除一行 |
diw |
删除光标处的单词 |
dis |
删除光标处的句子 |
dgg |
删除到文件首 |
dG |
删除到文件末 |
d^ |
把当前光标至行首的字符删除 |
d$ |
把当前光标至行尾的字符删除 |
db |
把当前光标至所在单词词首的字符删除 |
dw |
把当前光标至所在单词词尾的字符删除 |
表4 vim的常规删除指令——必须在普通模式下执行
表4列出的只是一些删除的常规操作,为了展示vim的强大,我们列出一些综合性的”骚“操作,请看表5
操作指令 |
效果 |
:g/^$/d |
删除空行 |
:g/^\s*#/d |
删除以#号开头的行 |
:g/hell/d |
删除包含hell的行 |
:g/^hell/d |
删除以hell开头的行 |
:g/hell$/d |
删除以hell结尾的行 |
表5 综合性的删除操作
4. 常规编辑操作——复制、粘贴
本小节,我们学习复制操作,复制操作离不开指令字符“y”,最顺手的复制操作当属连按两次y键——复制当前行。如果要连续复制几行,则须佩以数字,如3yy的作用是复制三行。复制完成后,只需要按“p”键,即可粘贴,需要注意的是,这些操作都要在普通模式下执行。表6列出了复制粘贴的常规操作。
操作指令 |
效果 |
yy |
复制当前行 |
nyy |
复制n行 |
y^ |
复制至行首 |
y$ |
复制至行末 |
yb |
复制当前光标至所在单词词首的字符 |
yw |
复制当前光标至所在单词词尾的字符 |
diw |
复制光标处的单词 |
dis |
复制光标处的句子 |
yH |
复制当前行到首行 |
yG |
复制当前行到末行 |
p |
粘贴在光标后 |
P |
粘贴在光标前 |
表6 复制粘贴的常规操作
如果需要选中一些内容后再进行复制,可普通模式下按v键进入选择模式,然后用方向键或hjkl选择文本,再按y行进行复制。如果需要的是剪切,则需要按d键——是的,你猜得没错,前面的所有删除操作等同于剪切^_^
5. 常规编辑操作——撤销、恢复
类似windows系统中的Ctrl+z和Ctrl+y,vim也有对应的撤销和恢复操作,就是在普通模式下,按u键即为撤销,而恢复则是Ctrl+r。