[20180211]在vim中使用bc进行各种运算.txt

[20180211]在vim中使用bc进行各种运算.txt

--//别人的建议,完善一下在vim调用bc进行各种运算.
--//我以前定义如下,完成计算,10,16进制转换.

noremap  <Leader>cc Yp!!bc -lq<CR>kA = <ESC>J
noremap  <Leader>ch YpIobase=16;<ESC>!!bc -lq<CR>kA = 0x<ESC>Jxguu
noremap  <Leader>cd YpgUU:s/0x//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>J

--//去年完善实现oracle数据块转换,以及scn拆分为scn_wrap,scn_base的计算.

noremap  <Leader>c22 Y2pA/4194304<ESC>!!bc -q<CR>jA%4194304<ESC>!!bc -q<CR>2kA = set dba <ESC>3Js,<ESC>
noremap  <Leader>c32 Y4pA/4294967296<ESC>!!bc -q<CR>jA%4294967296<ESC>!!bc -q<CR>2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>jIobase=16;<ESC>A/4294967296<ESC>!!bc -q<CR>jIobase=16;<ESC>A%4294967296<ESC>!!bc -q<CR>guu2kA = scn_wrap,scn_base: <ESC>3Js,<ESC>
noremap  <Leader>c16 Y2pA/65536<ESC>!!bc -q<CR>jA%65536<ESC>!!bc -q<CR>2kA = /16 %16: <ESC>3Js,<ESC>

--//比如知道块地址有时候16进制的,比如0x0040007a,按照前面的设置
0x0040007a = 4194426
4194426 = set dba 1,122

--//先输入 \cd 转换 10进制,然后 \c22 转换 数据块的dba地址.有点麻烦,讲2者结合在一起:

noremap  <Leader>d22 YpgUU:s/0x//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>jY2pA/4194304<ESC>!!bc -q<CR>jA%4194304<ESC>!!bc -q<CR>2kA = set dba <ESC>3Js,<ESC>kJ

0x0040007a =
4194426 = set dba 1,122
--//这样输入\d22

0x0040007a = 4194426 = set dba 1,122

--//scn如果这样如何计算:
0x0005.bcf9fda3

noremap  <Leader>d32 YpgUU:s/0x//ge<ESC>:s/\.//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>jY2pA/4294967296<ESC>!!bc -q<CR>jA%4294967296<ESC>!!bc -q<CR>2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>kJ

0x0005.bcf9fda3  = 24645336483 = scn_wrap,scn_base: 5,3170500003
--//这样输入\d32

--//scn(10进制转换16进制形式)如果这样如何计算:
5.3170500003 

noremap  <Leader>h32 Ypg<ESC>:s/\./*4294967296+/gei<CR><ESC>!!bc -lq<CR>kA = <ESC>jY2pIobase=16;<ESC>A/4294967296<ESC>!!bc -q<CR>jIobase=16;<ESC>A%4294967296<ESC>!!bc -q<CR>guu2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>kJ

5.3170500003  = 24645336483 = scn_wrap,scn_base: 5,bcf9fda3

$cat bc.vim
noremap  <Leader>cc Yp!!bc -lq<CR>kA = <ESC>J
noremap  <Leader>ch YpIobase=16;<ESC>!!bc -lq<CR>kA = 0x<ESC>Jxguu
noremap  <Leader>cd YpgUU:s/0x//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>J

noremap  <Leader>c22 Y2pA/4194304<ESC>!!bc -q<CR>jA%4194304<ESC>!!bc -q<CR>2kA = set dba <ESC>3Js,<ESC>
noremap  <Leader>c32 Y4pA/4294967296<ESC>!!bc -q<CR>jA%4294967296<ESC>!!bc -q<CR>2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>jIobase=16;<ESC>A/4294967296<ESC>!!bc -q<CR>jIobase=16;<ESC>A%4294967296<ESC>!!bc -q<CR>guu2kA = scn_wrap,scn_base: <ESC>3Js,<ESC>
noremap  <Leader>c16 Y2pA/65536<ESC>!!bc -q<CR>jA%65536<ESC>!!bc -q<CR>2kA = /16 %16: <ESC>3Js,<ESC>

noremap  <Leader>d22 YpgUU:s/0x//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>jY2pA/4194304<ESC>!!bc -q<CR>jA%4194304<ESC>!!bc -q<CR>2kA = set dba <ESC>3Js,<ESC>kJ
noremap  <Leader>d32 YpgUU:s/0x//ge<ESC>:s/\.//gei<CR>Iibase=16;<ESC>!!bc -lq<CR>kA = <ESC>jY2pA/4294967296<ESC>!!bc -q<CR>jA%4294967296<ESC>!!bc -q<CR>2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>kJ

noremap  <Leader>h32 Ypg<ESC>:s/\./*4294967296+/gei<CR><ESC>!!bc -lq<CR>kA = <ESC>jY2pIobase=16;<ESC>A/4294967296<ESC>!!bc -q<CR>jIobase=16;<ESC>A%4294967296<ESC>!!bc -q<CR>guu2kA = scn_wrap.scn_base: <ESC>3Js.<ESC>kJ

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2151055/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/267265/viewspace-2151055/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值