Я выполнил команду в Vim, который вставляет результат вычисления в файле, то есть вы наберетеКак упростить этот оклейки калькулятор
:CalP 34 * 89
и он должен вставить результат после того, как курсор.
Код выглядит следующим образом:
command! -nargs=+ CalP :call Calculator(<q-args>) | normal! p
py from math import *
fun Calculator(arg)
redir @"
execute "py print " a:arg
redir END
let @" = strpart(@", 1)
endfun
Это работает, но грязнее, чем я хотел бы, простой операции, в основном потому, что:
- Я не знаю, лучший способ перенаправления выход
py print ...
в"
регистре - Я должен написать
execute "py print " a:arg
, потому что толькоpy print a:arg
не работает let @" = strpart(@", 1)
удаляет паразитную новую строку в передней части регистра, который создаетpy print
, в идеале это должно быть удалено
Я думаю, что это должно быть выполнимо в одной строке, но я не знаю достаточно vimscript.
Спасибо, я на самом деле не знаю об этом. Это решает большую часть проблемы, единственное, что я хотел, чтобы она работала со сложными числами, а также с pyeval. Я получаю сообщение об ошибке «Не удалось преобразовать возвращенный объект python в значение vim», тогда как в моей функции, если я импортирую cmath в моем vimrc я могу оценить такие вещи, как 'exp (pi * 1j)' – texasflood
Обернуть выражение в 'str (...)', чтобы убедиться, что * Python * преобразует его в строку, а не ожидает, что Vim сделает это. – Amadan