2013-09-17 4 views
2

Я новичок в vim после переключения с Notepad и Notepad ++, но я использовал его исключительно в течение последних четырех месяцев. В моем .vimrc у меня есть команда, которая автоматически изменяет командный вызов на основе расширений файлов. Например, если я редактирую файл R, я могу нажать <F5>, а vim исполняет !Rscript %:p<cr>, но если я переключусь на файл python и нажмите <F5>, vim выполнит !python %:p<cr>. Я совершаю это, поставив следующий в моем .vimrc:Есть ли лучший способ сопоставить командный вызов на основе filetype

autocmd BufRead *.R noremap <F5> :!Rscript %:p<cr> 
    autocmd BufRead *.pl noremap <F5> :!perl %:p<cr> 
    autocmd BufRead *.py noremap <F5> :!python %:p<cr> 

Я интересно, если это «правильный» ВИМ способ его выполнения на основе команды вызова. Я знаю, что некоторые из файлов python, с которыми я работаю, не имеют расширения * .py, и поэтому этот параметр бесполезен в этом случае.

+0

возможных дубли: http://stackoverflow.com/questions/8825032/vim-inoremap-for-specific-filetypes http://stackoverflow.com/questions/18085858/ВИМ-autocmd-не-рабочий с-nnoremap –

ответ

5

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

  • Создание отображения локальной для конкретного буфера с помощью опции <buffer> для noremap.
  • Загрузите сопоставления только для определенного типа файла.

Это может быть сделано с помощью autocmd и FileType событие в вашей .vimrc так:

autocmd FileType perl noremap <buffer> <F5> :!perl %:p<cr> 

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

Простой пример сделать создать файл с именем, ~/.vim/ftplugin/perl.vim и поместите отображения внутри примерно так:

nnoremap <buffer> <F5> :!perl %:p<cr> 

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

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

:h :au 
:h FileType 
:h map-local 
:h ftplugin 
0

Если у вас есть BufRead *.py, автокоманда запускается только при загрузке буфера/файла *.py.

vim has filetype механизм обнаружения.

Vim может определять тип редактируемого файла. Это делается с помощью , проверяя имя файла, а иногда и проверяя содержимое файла для конкретного текста.

следует переключить :filetype on

и использовать FileType событие в вашей autocmd.

Смежные вопросы