#vim #autocomplete #file-type
#vim #автозаполнение #тип файла
Вопрос:
Я хочу привязать что-то вроде этого:
-
Для файлов CSS, HTML:
<c-space> <c-x><c-n>
-
Для файлов Ruby:
<c-space> <c-x><c-u>
Как это сделать?
Ответ №1:
Документация более полная, точная и правильная, но кратко:
Создайте файл в своей папке ftplugin (при необходимости создайте эту папку), начиная с типа файла, который вы хотите использовать.
├── vim
│ ├── after
│ ├── autoload
│ ├── bundle
│ ├── ftplugin
│ │ ├── python.vim
│ │ ├── rnoweb.vim
│ │ └── tex.vim
│ └── syntax
и в одном из этих файлов, например, в python.vim, строка типа
noremap! <buffer> <F5> <Esc>:w<CR>:!python % <CR>
будет привязка, определенная только для этого типа файла, только в этом буфере. Убедитесь filetype plugin on
, что в вашем vimrc отображается или аналогичный.
Редактировать: отличные предложения от Peter Rincker incorporated: версия noremap команды map и <buffer>
флага. Он также напоминает нам использовать setlocal
вместо set
в наших файлах плагинов filetype.
Комментарии:
1. Вы захотите использовать
<buffer>
флаг, чтобы сделать сопоставления локальными в буфере. напримерinoremap <buffer> <c-space> <c-x><c-o>
. Вы также захотите позаботиться об использованииsetlocal
параметров for .
Ответ №2:
Используйте autocmd:
autocmd filetype css inoremap <buffer> <c-space> <c-x><c-n>
autocmd filetype html inoremap <buffer> <c-space> <c-x><c-n>
autocmd filetype ruby inoremap <buffer> <c-space> <c-x><c-u>
Комментарии:
1. вы также можете комбинировать строки,
autocmd filetype css,html setlocal...
2. Необходимо удалить
setlocal
Ответ №3:
Поместите следующее в свой файл .vimrc. Замените строки do stuff своими привязками.
:if match(@%, ".css") >=0
: do css stuff
:endif
:if match(@%, ".rb") >=0
: do ruby stuff
:endif