[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