Leaders

来到了常见的 Leader.

初学时, 我简单地把 Leader 理解成一个 namespace, 好比 tmux 的 Ctrl+b. 现在看, 也没有偏差太多.

你可以把 Leader 看成是 Vim 内置的 prefix key.

Leader 的值存在 mapleader 变量中, 如果 mapleader 未初始化或者值为空, 则默认为 反斜杠 \ .

这里注意: mapleader 是一个 variable, 不是一个 option, 使用 :set mapleader? 会报错的.

相应的, 如果想要修改 Leader 键, 可以通过给 mapleader 赋值来实现.

编辑.vimrc, 添加如下代码:

let mapleader="-"
nnoremap <Leader>d dd

保存退出, source 后, 打开文件, 在 Normal 模式下, 按 -d, 等同于执行 dd. 即删除当前行. 此时 <Leader> 已变成了- 了, 如果按\d , 会发现无效.

mapleader 还有一个小兄弟, 叫 maplocalleader, 在 Vim中用特殊的字符串 <LocalLeader> 来表示.

同样, 可以通过赋值 maplocalleader 来设置 <LocalLeader> :

:let maplocalleader = "\\"

<LocalLeader> 是用来干嘛的呢?

作者在书中提到 <LocalLeader> 用来作为特定文件类型中的前置键.

This is meant to be a prefix for mappings that only take effect for certain types of files, like Python files or HTML files.

这个同官方文档中给出的, 稍稍有些区别.

Vim 官方文档提到的是 <LocalLeader> 用于只针对当前 buffer 有效的mappings.

<LocalLeader> is to be used for mappings which are local to a buffer. Example:
:map <LocalLeader>A oanother line

但是文档中也提到了:

In a global plugin <Leader> should be used and in a filetype plugin <LocalLeader>.

全局插件使用 <Leader> , 特定文件类型的插件, 使用 <LocalLeader> .[有关Plugin, 后面会单独再介绍]

当然, 平日里我基本用不到<LocalLeader> , 这里就不折腾了.

可以查看官方文档了解更多.

:h mapleader
:h maplocalleader