Vim связать несколько горячих клавиш, отличных от типа файла - PullRequest
3 голосов
/ 01 октября 2011

Я хочу связать что-то вроде этого:

  • Для CSS, HTML-файлы: <c-space> <c-x><c-n>

  • Для файлов Ruby: <c-space> <c-x><c-u>

Как это сделать?

Ответы [ 3 ]

7 голосов
/ 01 октября 2011

Документация является более полной, точной и правильной, но вкратце:

Создайте файл в папке ftplugin (создайте эту папку при необходимости), начиная с типа файла, который вы хотитеиспользовать.

├── vim
│   ├── after
│   ├── autoload
│   ├── bundle
│   ├── ftplugin
│   │   ├── python.vim
│   │   ├── rnoweb.vim
│   │   └── tex.vim
│   └── syntax

и в одном из этих файлов, например, в python.vim, строка типа

noremap! <buffer> <F5> <Esc>:w<CR>:!python % <CR>

будет привязкой, определенной только для этого типа файла,только в этом буфере.Убедитесь, что в вашем vimrc присутствует filetype plugin on или аналогичный.

Редактировать: включены отличные предложения Питера Ринкера: noremap версия команды map и флаг <buffer>.Он также напоминает нам использовать setlocal вместо set в наших файлах плагинов для типов файлов.

4 голосов
/ 01 октября 2011

Использовать 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>
3 голосов
/ 01 октября 2011

Поместите следующее в ваш .vimrc. Замените строки do stuff своими привязками.

:if match(@%, ".css") >=0 
: do css stuff
:endif

:if match(@%, ".rb") >=0 
: do ruby stuff
:endif
...