Обновление:
Спасибо за разъяснение вашего вопроса. Я постараюсь предложить лучший ответ, в том числе дополнительную функцию для вызова интерактивного отладчика (в дополнение к запрошенному RUN REPL).
Я должен оговориться, что это не обязательно идиоматический подход для использования плагинов компилятора vim.
Надеюсь, это реализует альтернативный подход, который вы пытаетесь достичь.
Добавьте это в файл .vimrc:
" Per-file-type definitions for RUN REPL DEBUG
au BufNewFile,BufRead *.m let b:comp = ["octave", "octave", "octave"]
au BufNewFile,BufRead *.py let b:comp = ["python", "python", "python -m pdb"]
au BufNewFile,BufRead *.pl let b:comp = ["perl", "perl", "perl -d"]
au BufNewFile,BufRead *.rb let b:comp = ["ruby", "irb", "ruby -rdebug"]
nmap <Leader>r :exec "!" b:comp[0] " %"<cr>
nmap <Leader>i :exec "!" b:comp[1]<cr>
nmap <Leader>d :exec "!" b:comp[2] " %"<cr>
В au
команды задают буфер локальной б: аккомпанемента массив запуска/замена/отладочных команд на основе расширения файла. Команды nmap
отображают нажатия клавиш, которые вы указали.
И тогда вы можете использовать:
<Leader>r - to run the current buffer
<Leader>i - to start REPL in language corresponding to current buffer
<Leader>d - to start interactive debugger for the current buffer
Конечно, я понимаю, что не существует такого понятия, как истинный РЕПЛ для Perl (по крайней мере, не вне коробки), и для того, для вызова интерактивного отладчика после запуска октавы появляется you must call a function such as dbstop("func") to set a breakpoint, а затем вызывать функцию, которую вы хотите отлаживать, и так далее.
Нижняя строка: «конечный пользователь» этого подхода должен иметь в виду, что поддержка run/repl/debug будет сильно отличаться в зависимости от возможностей языка, с которым вы работаете.
Привет, спасибо за действительно хороший ответ. Я обновил вопрос. Оказывается, я хочу иметь возможность вызывать компилятор/интерпретатор более чем одним способом, а не просто компилировать текущий файл. –
См. Обновленный ответ для вашего обновленного вопроса. Если он работает должным образом, дайте мне знать, и я могу отредактировать свой новый ответ, чтобы удалить предыдущий ответ на предыдущую версию вопроса. – linguanerd
Спасибо. Наверное, это так сухо, что мы можем получить. –