基本映射

如果说有什么 Vimscript 的特性会让你更倾向于使用 Vim,那就是映射按键。 映射按键可以让你告诉 Vim :

当我按了这个键时,你要做这个事,而不是平时所做的。

我们将从普通模式中的映射按键开始。 在下一章节,我们会讨论如何在插入模式以及其他模式下映射按键。

在一个文件中随便输入几行文本,然后运行:

:map - x

把光标停在文本的某处,然后按 - 键。 注意 Vim 删除了光标处的字符,就像是按了 x 键一样。

我们已经有了一个按键来“删除光标处的字符”,所以我们稍微修改下这个映射,让它更有用。 运行这个命令:

:map - dd

现在,把光标放到某一行,然后再次按 - 键。 这次,Vim 删除了一整行,因为那就是 dd 所做的。

特殊字符

你可以用 <keyname> 来告诉 Vim 使用特殊字符。 试试运行这个命令:

:map <space> viw

把光标移到某个单词处,然后按空格键, Vim 会可视化的选中这个单词。

你也可以映射 CtrlAlt 这样的修饰键。运行这个:

:map <c-d> dd

现在,按下 Ctrl-d,就会运行 dd

注释

还记得第一章节中说到的注释么?映射按键就是一处 Vim 注释不能正常工作的地方。 试试运行这个命令:

:map <space> viw " Select word

现在按下空格键的话,几乎可以肯定会发生一些让人震惊的事。为什么呢?

当按下空格键时,Vim 认为你想要是 viw<space>"<space>Select<space>word。 明显这并不是我们想要的。

如果你仔细看看这个映射所产生的效果,会发现一些诡异的情况。 试着花几分钟来弄明白使用它时到底会发生什么,以及为什么会发生。

如果你并不能马上弄明白它,也请不要担心 —— 我们以后还会更多得提及到它。

练习

映射 - 键为“删除当前行,然后把它粘贴到现在当前行的下面”。 这使得通过一次按键,就把文件中的行下移。

把这个映射添加到 ~/.vimrc 文件中,这样,在每次打开 Vim 的时候都可以使用它了。

想想如何映射 _ 键为把行向上移动,而不是向下。

把这个映射也添加到 ~/.vimrc 文件中。

猜猜如何删除一个映射,并且把按键重置为往常的功能。

原文地址:http://learnvimscriptthehardway.stevelosh.com/chapters/03.html