Vim Hotkeys для конкретного файла

2666
vonhogen

Можно ли установить горячие клавиши для определенных типов файлов в Vim.

Например, если я редактирую файл .java, я бы хотел, чтобы vim запускал javac .java, когда я нажимаю 5.

Это возможно?

4

3 ответа на вопрос

7
Andrejs Cainikovs

~ / .Vimrc

autocmd FileType java map <F5> :! javac %<cr> 

Больше информации о сопоставлении клавиш и внешних командах .

можно ли удалить расширение файла? так что я могу сделать как java% (удалить .java)? vonhogen 14 лет назад 0
Я сомневаюсь в этом, но вы можете сделать ярлык для скрипта, который будет лишать расширения и выполнять javac в результате. Andrejs Cainikovs 14 лет назад 0
@karmic: Use something like `autocmd FileType java map :exe '! javac ' . expand('%:r')` See `:help expand()` for more information. Al. 14 лет назад 2
4
Luc Hermitte

(Я не понимаю смысла дихотомии между SO и SU для таких вопросов ... Во всяком случае :) Ваш вопрос уже получен, несколько дней спустя, на SO: ftplugins + локальные отображения / сокращения / команды - это путь к идти.

Что касается вызова javac, просто используйте% <, чтобы получить имя файла без расширения. Первое правильное отображение, таким образом, становится:

:nnoremap <buffer> <f5> :!javac %<<cr> 

Но вместо этого предпочитайте полагаться на режим быстрого исправления с помощью:

:setlocal makeprg=javac\ $* :nnoremap <buffer> <f5> :make %<<cr> 
3
jtimberman

У меня нет прямого опыта написания чего-либо подобного с Vim с нуля, но вот то, что вы захотите найти примеры для подражания.

Возможно, вам нужен плагин для файлового типа (ftplugin) для файлов .java:

Плагин filetype похож на глобальный плагин, за исключением того, что он устанавливает параметры и определяет отображения только для текущего буфера. Смотрите | add-filetype-plugin | для того, как этот тип плагина используется.

И используйте его с помощью mapleader + hotkey:

Чтобы определить отображение, которое использует переменную "mapleader", можно использовать специальную строку "". Он заменяется строковым значением «mapleader». Если «mapleader» не установлен или пуст, вместо него используется обратный слеш. ... Чтобы определить отображение, которое использует переменную "mapleader", можно использовать специальную строку "". Он заменяется строковым значением «mapleader». Если «mapleader» не установлен или пуст, вместо него используется обратный слеш.

Вы можете взглянуть на сценарии Vim JDE или это руководство по настройке Vi (m) для разработки на Java. Эта страница содержит информацию об использовании javac в Vim.