============
我们已经学会了如何建立按键映射来让我们用起来比较爽,但是你也许会发现另外的一个问题。
每次我们使用类似于:nnoremap <space> dd
命令来对空格键进行映射时,我们就会覆盖空格键原有的功能,但是如果我们后面需要使用空格键原来的功能怎么办呢?
还有很多按键在vim里我们是很少使用的。例如‘\’没有任何功能,-,H,L和空格键基本上都不会使用到。具体其他的不使用的键你自己可以根据自己的使用习惯来发掘。
这些不使用的键可以随意哪来映射,但是只有5个。但是vim神奇的自定义功能可以帮我们实现更多。
============
不像Emacs,vim可以很简单的映射多个按键,运行下面的命令:
:nnoremap -d dd
:nnoremap -c ddO
然后在normal模式下尝试输入‘-d’和‘-c’(速度要快)。这个命令的第一行是自定义了一个删除一行文本的功能,第二行定义了清除一行,并转换到插入模式的功能。
这样也就意味着我们可以用一个不使用的按键,例如‘-’,来用作前导字符,然后再根据这个前导字符来建立相应的映射。这也就意味着我们需要多按一个键来触发映射,不过这个对于手指而言是很容易掌握的。
如果你认为这是个不错的注意的话,那就对了,vim确实也有前导字符的功能。
============
vim称前缀按键为“leader”。你可以任意设置你的leader键,运行下面的命令:
:let mapleader = "-"
你可以用任意键代替‘-’,我个人比较喜欢用‘,’ ,虽然它是一个很常用的标点,但是它很容易被按下,所以我比较喜欢用逗号。
当你用
:noremap <leader>d dd
现在试着按leader键加上d,vim会删除当前的文本行。
为什么要用
首先,你可能在后面的某些时候需要用你的前导按键原来的功能。把它定义在同一个地方方便后面修改。
其次,当别人在参考你的~/.vimrc文件的时候,他们马上就会知道
最后,有些vim插件会根据你的leader键来做映射的,所以如果你设置了leader键的话,就可以直接用这些映射了。
============
vim有另外一个leader键叫做本地leader键,本地的意思是这个前导键所对应的映射只会对某些类型的文件例如Python文件或者HTML文件有用。
我们后面会讨论怎么对特定的文件类型设定本地映射,不过在这里你可以先试着设置本地映射:
:let maplocalleader="\\"
注意我们需要用‘\’而非‘\’,因为‘\’在字符串里是转义符。在后面会讲到这个的。
现在你可以在映射里像用leader键一样使用localleader键,它们只是映射的按键不同而已。
============