2016/11/01

[Vim] Vim で、カーソル下の数値を変換したい

上から順に、

  • 2 進数変換
  • 10 進数変換
  • 16 進数変換
  • 数値の桁(ゼロオリジン)のマスク値に変換
  • 数値の桁(1オリジン)のマスク値に変換

という感じ。

マクロ

viwc^R=printf("0b%b", ^R")^M^[
viwc^R=printf("%d", ^R")^M^[
viwc^R=printf("0x%04X", ^R")^M^[
viwc^R=printf("0x%04X", printf("%.f", pow(2, ^R")))^M^[
viwc^R=printf("0x%04X", printf("%.f", pow(2, ^R"-1)))^M^[

コマンドバージョン

command! Num2b execute "normal viwc<C-R>=printf(\"0b%b\", <C-R>\")<Return><Esc>"
command! Num2d execute "normal viwc<C-R>=printf(\"%d\", <C-R>\")<Return><Esc>"
command! Num2x execute "normal viwc<C-R>=printf(\"0x%04X\", <C-R>\")<Return><Esc>"
command! Num2Mask0 execute "normal viwc<C-R>=printf(\"0x%04X\", printf(\"%.f\", pow(2, <C-R>\")))<Return><Esc>"
command! Num2Mask1 execute "normal viwc<C-R>=printf(\"0x%04X\", printf(\"%.f\", pow(2, <C-R>\"-1)))<Return><Esc>"

0 件のコメント: