Как выполнить действия с расширением файла в VIM? - PullRequest
6 голосов
/ 24 мая 2009

Я хочу выполнить действие rubyf в VIM, когда нажимаю F5, если файл имеет расширение .rb. Прямо сейчас у меня есть

map <F5> :rubyf % <CR>.

Но я также хочу интерпретировать файлы схемы, если это .scm или компилировать текс и т. Д., Используя тот же F5. Как проверить расширение файла и выполнить правильную привязку? Как вы, ребята, компилируете разные файлы в G / VIM?

Ответы [ 4 ]

12 голосов
/ 24 мая 2009

Вы можете создать разные autocmd для каждого расширения файла. например:

au BufEnter,BufNew *.rb map <F5> :rubyf % <CR>.

См. :help autocmd для получения информации об autocmds.

Лучшим подходом для вашей конкретной проблемы было бы сопоставить <F5>, чтобы всегда вызывать :make %, а затем иметь autocmd, который устанавливает опцию makeprg для каждого типа файла (используйте setlocal, когда вы делаете это для лучшего Результаты). Это будет не для загрузки ruby ​​в Vim (как вы, кажется, делаете), а для вызова внешнего компилятора / интерпретатора / линтера. Это по сути то, что я делаю. Хорошая вещь в этом заключается в том, что Vim может интерпретировать ошибки и предупреждения и автоматически переходить к проблемам в вашем коде. Вы также можете вызвать список ошибок / предупреждений. См. :help quickfix для получения информации об этом, а также разделы справки для 'makeprg', :make, :copen и 'errorformat'.

Небольшое отклонение от этого может заключаться в том, чтобы вообще не использовать autocmds, а вместо этого иметь внешний скрипт, который при задании имени исходного файла выясняет, что нужно запускать (ruby, ваш компилятор схем, pychecker, ваш компилятор C и т. Д.) , Затем просто установите makeprg, чтобы всегда запускать этот скрипт.

4 голосов
/ 25 мая 2009

Автокоманды - твой друг.
определяется следующим образом:
:au[tocmd] [group] {event} {pat} [nested] {cmd}

в вашем случае следующая строка в .vimrc будет делать то, что вы хотите.
autocmd BufRead,BufNewFile *.rb map &lt;F5&gt; :rubyf % &lt;CR&gt;.

Для получения дополнительной информации SE:
http://www.ph.unimelb.edu.au/~ssk/vim/autocmd.html

4 голосов
/ 24 мая 2009

Используйте filetype плагинов.

Создать файл ~/.vim/ftplugin/ruby/custom.vim

В этот файл помещайте любые команды, которые вы хотите включить, только когда тип файла текущего буфера - ruby. Они будут получены соответствующим образом.

Если вы хотите сделать то же самое из схемы, создайте другой файл ~ / .vim / ftplugin / circuit / custom.vim`` и сделайте то же самое.

Каждый раз, когда вы загружаете файл в vim, он обнаруживает тип файла и загружает все плагины, соответствующие вашему типу файла.

1 голос
/ 24 мая 2009

На этот вопрос довольно хорошо ответили на этот вопрос .

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