Как работают сокращения, зависит от опции 'iskeyword'
. Смотри :h Abbreviations
.
В левой части аббревиатуры могут быть только ключевые слова ( full-id ), не являющиеся ключевыми словами символы, заканчивающиеся символом ключевого слова ( end-id ), или любые символы, заканчивающиеся не-ключевыми словами ( non-id ).
Если символ #
является , а не частью 'iskeyword'
, то #def
не является ни одним из трех типов и, следовательно, :ab #def ...
недопустим. Потому что это ключевые слова, начинающиеся не с ключевого слова.
Формат 'iskeyword'
довольно загадочный (см. :h 'isfname'
), но по умолчанию он установлен на @,48-57,_,192-255
. Не включает #
.
Быстрый тест:
:set isk=a-z
:ab #def foo
E474: Invalid argument
:set isk=a-z,#
:ab #def foo
Таким образом, вы можете поставить set iskeyword+=#
перед своими сокращениями, но это может привести и к другим проблемам, так как символы из 'iskeyword'
используются для многих вещей.