Vim inoremap для определенных типов файлов - PullRequest
6 голосов
/ 11 января 2012

Я добавил несколько простых inoremap команд к своему .vimrc, чтобы помочь с завершением скобок и скобок, но я хочу, чтобы они применялись только к php-файлам.

 inoremap ( ()<Esc>i
 inoremap { {<CR>}<Esc>ko
 inoremap <? <?php ?><Esc><Left>i

Как установитьэти команды активны только при редактировании .php файла?

Ответы [ 5 ]

13 голосов
/ 12 января 2012

Вам нужно сделать 2 вещи:

  • создать локальное сопоставление с определенным буфером, используя опцию <buffer> для inoremap.
  • загрузить сопоставления только дляопределенный тип файла.

Это можно сделать с помощью автокоманды в вашем .vimrc, например, так:

autocmd FileType php inoremap <buffer> ( ()<Esc>i

Другой вариант заключается в создании плагина типа файла.(см. :h ftplugin для получения более подробной информации)

Простой пример: создайте файл с именем ~/.vim/after/ftplugin/php.vim и разместите ваши отображения внутри следующим образом:

inoremap <buffer> ( ()<Esc>i
inoremap <buffer> { {<CR>}<Esc>ko
inoremap <buffer> <? <?php ?><Esc><Left>i

Я лично склоняюсь больше кПодход ftplugin, но наличие всего в вашем файле .vimrc может быть хорошим.

8 голосов
/ 11 января 2012

Использование autocmd FileType:

autocmd FileType php,c,java inoremap ( ()<Esc>i
5 голосов
/ 12 января 2012

положить их в этот файл

~/.vim/ftplugin/php.vim
1 голос
/ 12 января 2012

Добавьте их в файл ftplugin в каталоге after:

~/.vim/after/ftplugin/php.vim

Подробнее в этот ответ .

Редактировать: Этот файл и, возможно, даже каталог не будет там по умолчанию. Возможно, вам придется сделать это, если вы не видите это там.

0 голосов
/ 11 января 2012

Возможно, есть лучший способ сделать это, но это должно сработать:

autocmd FileType php call Inoremaps()
fu! Inoremaps()
   inoremap ...
endfu
...