Определить тип файла из плагина VIM? - PullRequest
2 голосов
/ 28 января 2010

У меня есть плагин vim, который определяет связку клавиш.

Я пытаюсь выяснить, как можно изменить определение сопоставления клавиш на основе типа файла.

Например:

Если файл * .py: сопоставьте ключ с X Если файл * .php:, сопоставьте ключ с Y

Спасибо!

Ответы [ 3 ]

2 голосов
/ 28 января 2010

Да. Одним из способов будет использование autocmd для вызова пользовательской функции, которая устанавливает ваши карты. Это выглядело бы примерно следующим образом (могло бы исказить синтаксис, так что это не совсем копируемое и вставляемое): augroup foo autocmd! autocmd FileType python call MyPythonSettings() augroup end</p> <p>function !MyPythonSettings() set noai " set mappings... endfunction

1 голос
/ 28 января 2010

Когда нужно определить конкретные команды / аббревиатуры / отображения, я всегда делю свой плагин на несколько файлов:

  • основные функции, которые входят в плагин (ы) автозагрузки
  • глобальные отображения / команды / сокращения, которые входят в "простой" плагин
  • материал, относящийся к типу файла, который входит в ftplugins.

Бесполезный пример:

Плагин автозагрузки

" autoload/lh/ThePlugin.vim
let g:multby = 42
function lh#ThePlugin#fn(arg)
    return a:arg * g:multby
endfunction
function lh#ThePlugin#inc_mult()
    let g:multby += 1
endfunction

«Простой» плагин

" plugin/ThePlugin.vim
if exist('g:ThePlugin_loaded') | finish | endif
let g:ThePlugin_loaded = '1.0.0'
nnoremap £ :call lh#ThePlugin#inc_mult()

Один ftplugin

" ftplugin/cpp/cpp_ThePlugin.vim
if exist('b:ThePlugin_loaded') | finish | endif
let b:ThePlugin_loaded = '1.0.0'
inoremap <buffer> µ <c-r>=lh#ThePlugin#fn(12)<cr>

PS: обратите внимание на использование <buffer>, чтобы не загрязнять другие типы файлов сопоставлениями, которые не имеют смысла, и не перекрывать ранее определенные (и определенные) сопоставления, которые имеют смысл.

0 голосов
/ 28 января 2010

Событие FileType наступает, когда пользователь открывает файл для редактирования. Это, однако, требует, чтобы пользователь включил :filetype on в ее vimrc (или вручную), будь то для этих конкретных расширений или глобально.

Если пользователь редактирует новый файл, вы не получите его до тех пор, пока он сначала не сохранит буфер или не выполнит :setf autohotkey :setf sql и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...