
Недавно я обнаружил, что когда вы входите внеразрывный пробел(nbsp)в HTML-документе
и установите encoding
значение utf-8, вам не придется вводить его nbsp;
несколько раз для форматирования текста. Сначала я
подумал, эй, почему бы мне не сопоставить это с пробелом, как это так :imap <SPACE> <C-R>=nr2char(160)<CR>
.
Позже я отредактировал свой .vimrc
и, когда я перезапустил Vim, я получил дюжину ошибок о том, что какой-то функции нужно
имя, хотя я его и дал. Я понял, что nbsp
не рассматривается как пробел (ну да), хотя выглядит
как пробел. Поэтому я подумал, что лучшим способом было бы иметь сопоставление для каждого типа файла, так что когда я редактирую HTML-документ, пробел вставляет nbsp
и обычный пробел chr(32)
при редактировании любого другого файла.
Как мне это сделать?
решение1
Команда au[tocommand]
принимает FileType
событие, которое запускается, когда filetype
было установлено (например, при запуске с именем файла). Например, в ~/.vimrc
:
au Filetype python source ~/.vim/scripts/python.vim
решение2
Вы можете использовать плагины типа файла, которые получают источник только тогда, когда файл имеет определенный тип файла. Чтобы настроить это, создайте файл ~/.vim/ftplugin/html.vim
и поместите свои команды в этот файл. Если файл уже есть, вы можете создать каталог с именем html, и тогда каждый файл в каталоге будет источником. Посмотрите на:h ftplugin-name
для других вариантов именования. (Если каталоги не существуют, создайте их)
Все, что вам нужно иметь в вашем vimrc, это filetype plugin indent on
(indent на самом деле не обязателен для этого, но обычно полезен).
Также может быть важно сделать отображение локальным только для буфера, используя
map <buffer>
Также может быть полезно просмотреть :h ftplugin
и:h filetype