Некоторые из других ответов были полезны, но ни одного из них не было достаточно, чтобы Vim не переопределял строку, когда «#» - первый символ. Ответ PolyThinker не сработал для меня, но он дал подсказку, что «#» можно переназначить так, чтобы «вставить символ, затем #, затем удалить лишний символ и поместить курсор в нужное место». Это отображение, которое делает это:
inoremap # X#<left><backspace><right>
Это необходимо, потому что синтаксические пакеты vim обрабатывают '#' как специальный символ, независимо от того, как установлены параметры. Я хочу, чтобы строка, начинающаяся с '#', была такой же, как строка, начинающаяся с любого другого символа. Самым надежным решением, которое я нашел, является приведенное выше отображение, которое фактически меняет первый символ строки.
Примечание: я обнаружил, что это отображение вызывает проблемы после запуска I#<esc>
и нажатия кнопки "." повторить предыдущую вставку. Я еще не нашел решения.