Что такое get (b :, ...) в VimL? - PullRequest
0 голосов
/ 15 февраля 2019

Плагин vim-comment для Vim имеет следующий фрагмент:

function! s:surroundings() abort
  return split(get(b:, 'commentary_format', substitute(substitute(substitute(
        \ &commentstring, '^$', '%s', ''), '\S\zs%s',' %s', '') ,'%s\ze\S', '%s ', '')), '%s', 1)
endfunction

Что означает b: в первом параметре get?Кажется, он не соответствует ни одному из вариантов использования get:

get ({list}, {idx} [, {default}]) get () Получить элемент {idx} из | List |{список}.Если этот элемент недоступен, верните {default}.Возвратите ноль, когда {default} опущен.

get ({dict}, {key} [, {default}]) Получить элемент с ключом {key} из | Dictionary |{ДИКТ}.Если этот элемент недоступен, верните {default}.Возвратите ноль, когда {default} опущен.

get ({func}, {what}) Получить предмет из Funcref {func}.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Во-первых, вы должны знать, что b: - это префикс - внутреннее пространство имен (:help b:).Например, b:commentary_format будет локальной переменной текущего буфера.Но также, как объяснено в :help internal-variables:

Имя области само по себе может использоваться в качестве словаря.

, и вы можете проверить, что b: являетсясловарь с :echo b:.

Таким образом, b:foo эквивалентен b:["foo"].Тем не менее, нет способа указать значение по умолчанию таким образом.Поэтому г-н Папа использует вторую форму get («Получить элемент с ключом key из словаря dict. Если этот элемент недоступен, верните default»), чтобы предоставить альтернативу, если b:commentary_format не определено.

0 голосов
/ 15 февраля 2019

Я думаю, что это b:commentary_format, то есть локальная переменная буфера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...