4

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

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

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

3 ответа3

8

~/.Vimrc

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

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

4

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

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

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

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

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .