[about] [index] [prev] [2022-07-17 10:49:14+03:00] [355880e41d4bf3b49d5fd3fe49f245f5343840b1]
Topics: [tip][vim]

Вызов калькулятора в Vim

https://old.reddit.com/r/vim/comments/9421bm/whats_your_favourite_equalprg_hack/
http://www.git.stargrave.org/?p=dotfiles.git;a=blob;f=dc/.dc
Пишу тут код, где нужно прикинуть всякие простые вычисления, типа
offset-ов, длин и тому подобного. В самом же коде я делаю наброски и
вычисления, но нужно и что-то посчитать. Не видя никаких статей, я
самостоятельно додумался до вызова калькулятора внешнего:

    пишу на отдельной строке: 6 304 13 45 72 36 lSx 18 12+ 5*+p
    выделяю ("V") и вызываю калькулятор ":!zc"

Это я всякие размеры полей пакета считал, строчка оставшаяся в истории
редактора. Про ссылку на reddit вспомнил просто потому что недавно,
когда что-то искал по Vim, напоролся на неё. Но из неё узнал что вместо
визуального выделения параграфа, можно делать "!}zc" -- куда короче и не
загрязняет "историю" визуальных выделений. Всё равно, даже в простых
вещах, Vim не перестаёт удивлять маленькими полезностями.

В качестве калькулятора уже который год использую обёртку над dc RPN
калькулятором (d65882c3c5decb9e2216d7a8de98c1d422c2c42d).

    $ cat =zc
    #!/bin/sh
    exec rlwrap \
        --history-filename /tmp/.dc_history \
        --substitute-prompt "> " \
        --prompt-colour=red \
        dc -f ~/.dc -f /dev/stdin

Где ~/.dc содержит настройку точности и пока только пару скриптов:

* загруженный в "S" регистр суммирует всё что есть в стэке.
  Это я использую постоянно, без надобности писать кучу "+"
* загруженный в "L" регистр вычисляет натуральный логарифм. А для
  преобразования в другие основания применять формулу из школы, типа:
  1000lLx 10lLx /p

Вызов zc у меня есть и в tmux по быстрому нажатию prefix+t+c, но когда
чисел много, и их надо брать из кучи других мест, то уже не
попереключаешься между сессиями tmux удобно.

[leave comment]