Как я могу поместить несколько расчетов в текстовом документе VIM? - PullRequest
3 голосов
/ 24 марта 2012

Я хотел бы вставить вывод нескольких вычислений в мой текстовый документ:

2**3 = (the result)   
2**4 =         
..   
2**30 =

(** = экспоненциальный)
Кто-нибудь может мне помочь?

PS:
Было бы неплохо иметь вид немедленного создания сценариев в vim без использования .vimrc, просто для выполнения быстрых операций

pe
for i in range (3,30)<br> print "2**".i."=".2**i<br> endfor

Ответы [ 4 ]

3 голосов
/ 24 марта 2012

Если вы предпочитаете Python, и ваш vim скомпилирован с поддержкой, вы можете использовать его:

:py import vim
:py for i in range(3, 30): vim.current.buffer.append("2**%d = %d" % (i, 2**i))

Для более сложных умений вы можете написать блок кода вместо односложных.Это способ сделать это, просто это не очень удобно делать в интерактивной командной строке, но возможно:

:py << EOF
import vim
for i in range(3, 30):
  for j in range(1, 3):
    vim.current.buffer.append("{}x{}".format(i, j))
EOF

Более сложные вещи предназначены для написания в файлах сценариев и получения их по адресунеобходимо.

3 голосов
/ 24 марта 2012

Вы можете выполнить математику в vim, используя специальный регистр =, например, если вы вводите в режиме вставки

2+3=<C-R>=2+3<CR>

вы получите

2+3=5

P.S. <C-R> означает CTRL + r, <CR> означает нажатие возврата.

2 голосов
/ 24 марта 2012

Вы можете написать for...loop так:

:for i in range(3, 30) | call setline(i-2, printf('2**%d = %d', i, float2nr(pow(2, i)))) | endfor

Другой способ - перенаправить сообщения в файл:

:redir! >output.txt
:for i in range(3, 30) | echo printf('2**%d = %d', i, float2nr(pow(2, i))) | endfor
:redir END
:e output.txt
1 голос
/ 24 марта 2012

Следующее также работает

напишите несколько строк, скажем, python

total = 0.0
for i in range(10):
   total += i*i
print total

, затем выберите линии визуально (с помощью shift-v) и введите :!python. То, что вы должны увидеть, это :'<,'>!python тогда введенные вами строки должны быть заменены выводом строк в python.

...