#vim
#vim
Вопрос:
Меня интересует одна вещь. Если кто-то хочет сопоставить отображение, специфичное для некоторого буфера, можно пойти любым путем
: а) сделать это с помощью
nnoremap <buffer> d dd
б) или с
nnoremap <localleader>d dd
что эффективно, поскольку localleader специфичен для этого буфера, сделает это отображение специфичным и для этого буфера.
Это, в некотором смысле, похоже на два перекрывающихся способа сделать одно и то же. Есть ли причина для использования одного способа вместо другого? Может быть, по какой-то причине один способ предпочтительнее другого?
Ответ №1:
Насколько я могу судить maplocalleader
, он разделяется между буферами. Это означает, что ваша вторая карта не будет специфичной для буфера.
Действительно, если вы определяете карту, специфичную для буфера (например, карта относится только к определенному типу файла) Я считаю, что соглашение заключается в использовании обоих <buffer>
и <localleader>
. Если вы определяете карту, которая не является специфичной для буфера, вы должны просто использовать <leader>
.
Комментарии:
1. А, понятно. Таким образом, <localleader> не является специфичным для буфера, но его назначение — использовать для сопоставлений, специфичных для буфера. Теперь я перечитал справку, и они не смогли сформулировать ее более запутанно. Или я снова ошибся?
2. Да, вы понимаете это так же, как и я. Кажется, что
maplocalleader
это вообще едва документировано, но после небольшого тестирования это кажется правильным поведением.
Ответ №2:
1 <buffer>
Это важно для того, чтобы ваше сопоставление для определенного типа файла не стало глобальным, если вы только один раз открыли этот тип файла.
2 <LocalLeader>
Это применимо во всем мире. Как описано в R2A2, вы можете сопоставить <LocalLeader>
, чтобы быть удобной альтернативой <Leader>
. Где-то в вашем vimrc
:
let maplocalleader = '_'
nnoremap <localleader>h :echo 'you just hit _h'<cr>
Вы могли бы использовать <localleader>
with <buffer>
, как рекомендовано во внутренней справке Vim, для вашего ftplugin, тогда он _h
будет работать только с этим типом файла.