这一章的内容结合了前面学到的知识.
Buffer-Local, 顾名思义, 基于 Buffer, 只针对当前 Buffer 有效.
前面遇到的 mappings, options , abbreviations, 当需要只对当前 Buffer 生效时, 命令分别是什么呢?
来逐个说明下.
- mappings - 打开任意文件, 在命令行模式下, 输入: - :nnoremap <buffer> <Leader>x dd - normal 模式下, 按 - <Leader>x, 等同于dd, 删除当前行.- 此时, 另开一个文件, 执行同样的操作, 按 - <Leader>x, 没有变化.- Buffer-Local mappings 跟通用的 mappings 不一样的地方, 就是多了一个 - <buffer>, 也很好记.- 需要稍稍注意的是, 当 buffer 与 - <Leader>结合时, 建议使用- <LocalLeader>来代替- <Leader>, 这样避免覆盖了他人的- <leader>mapping.- 上面的例子建议改成: - :nnoremap <buffer> <LocalLeader>x dd - 再看个例子: - :nnoremap <buffer> Q x 
 :nnoremap Q dd- normal 模式下, 按 Q, 发现执行的操作等同 x. 第二个 mapping 配置无效. - Buffer-Local mappings 会覆盖对应的通用的 mappings 配置.这点同 set options 不大一样, 待会会提到. 
- set options - 基于 Buffer-Local 的设置, 用命令 - setlocal.- 打开任意文件, 在命令行模式下, 输入: - :set number 
 :setlocal nonumber- 会发现行号已经消失. - 需要注意的是, 如果 setlocal option 后, 又 set 了同一个 option, 则 setlocal 所做的改变会被覆盖. - 比如: - :setlocal nonumber 
 :set number
 :setlocal number?- 此时输出的结果是 number. 
- abbreviations - 同 mappings, Buffer-Local abbreviations 也只需要在 - abbrev后, 添加一个- <buffer>, 看个例子:- 在当前打开的文件下, 命令行模式输入: - :iabbrev <buffer> log logger.debug - 切换到 insert 模式, 输入log, 会替换成 logger.debug. - 此时, 更换另一个文件, 再次在 insert 模式下, 输入log, 发现没有变化. - 同 mappings 一样, Buffer-Local abbreviations 会覆盖通用的 abbreviations. - 刚刚设置的文件中, 命令行模式输入: - :iabbrev log logger.info - 切换到 insert 模式, 输入log, 替换的仍然是 Buffer-local 设置的 logger.debug. 
OK. Buffer-Local 基本缕完, 下一章来点不一样的.