Благодаря предложению Хорста, я смог разобраться, как заставить Vim сделать это с любым языком, у которого есть опция «оценивать» в командной строке. Для JavaScript команда, которую я собрал, выглядит следующим образом:
imap <F5> ^[_"ay$o//^[kJo^[!!node -e "^Ra"^MkJi nmap <F5> _"ay$o//^[kJo^[!!node -e "^Ra"^MkJ
Для поломки:
- Для
INSERT
отображения режима Escape ( ^[
) возвращается в обычный режим. _"ay$
помещает всю строку в регистр a
. o//^[kJ
добавляет "//" для комментария. o^[
начинается еще одна новая строка. !!node -e "^Ra"^M
запускает регистр (строку) через Node.js и возвращает результат в текущей строке. - Наконец,
kJ
тянет эту новую строку обратно к первой, чтобы стать комментарием. - (Для
INSERT
режима, i
возвращается в режим от NORMAL
до INSERT
еще раз).
То же самое можно сделать для Python с несколькими незначительными правками:
imap <F5> ^[_"ay$o#^[kJo^[!!python -c "import math; ^Ra"^MkJi nmap <F5> _"ay$o#^[kJo^[!!python -c "import math; ^Ra"^MkJ
Для этого //
комментарий заменяется на Python #
. Кроме того, я автоматически импортирую math
модуль, так как он может быть очень полезен для быстрых вычислений.
Я рекомендую поместить каждое из этих сопоставлений в свои соответствующие ~/.vim/ftplugin/<language>.vim
файлы и поместить set ftplugin on
в свой .vimrc
. Это позволяет изменять отображение в зависимости от того, с каким языком вы работаете!
Я надеюсь, что любой, кто хочет запустить код в Vim в интерактивном режиме, сможет найти это и, возможно, даже улучшить его. Огромное «Спасибо!» идет к Хорсту за ответ на этот вопрос и начало этого маленького проекта!