読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

カーソルの下の数値を簡単に進数変換できるVimスクリプト

Vim

vi/Vim コマンドポケットリファレンス

vi/Vim コマンドポケットリファレンス

目次

はじめに

テキストファイルや、

コード内の数値を

即座に進数変換したい時がかなりあるので、

Vimでカーソルの下に数値がある時に、

その値を即座に進数変換して表示する

Vimスクリプトを作りました。

 

進数変換用Vimスクリプト

使用する時は、下記のスクリプトを

ファイルに保存し、

vimrcでsourceして下さい。

"
" @brief Decimal Change
"
" @author Atsushi Sakai
"
" @copyright (c): 2016 Atsushi Sakai
"
" @license : MIT

function! DecimalChange()
  echo "DecimalChange"
  let word = expand("<cword>")
python << EOF
import vim
num = unicode(vim.eval("word"),'utf-8')
two=format (int(num),'b')
hexnum=hex(int(num))
final="0b"+two+" "+hexnum+" "+num
print final
EOF
endfunction

function! HexChange()
  echo "HexChange"
  let word = expand("<cword>")
python << EOF
import vim
num = unicode(vim.eval("word"),'utf-8')
if "0x" in num:
  flagnum=0
else:
  flagnum=16
two=format (int(num,flagnum),'b')
hexnum=num
if flagnum is 16:
  hexnum="0x"+hexnum
decnum=str(int(num,flagnum))
final="0b"+two+" "+hexnum+" "+decnum
print final
EOF
endfunction

function! BinaryChange()
  echo "BinaryChange"
  let word = expand("<cword>")
python << EOF
import vim
num = unicode(vim.eval("word"),'utf-8')
if "0b" in num:
  flagnum=0
else:
  flagnum=2
two=num
if flagnum is 2:
  two="0b"+two
decnum=str(int(num,flagnum))
hexnum=hex(int(decnum))
final=two+" "+hexnum+" "+decnum
print final
EOF
endfunction

command! DecimalChange :call DecimalChange()
command! HexChange :call HexChange()
command! BinaryChange :call BinaryChange()

使い方

変換したい数値の上にカーソルを置いて、

元の数値が10進数の場合は、

:DecimalChange

16進数の場合は

:HexChange

2進数の場合は、

:BinaryChange

とコマンドを入力すると、

下記のように、

元の数値を2進数、16進数、10進数に変換した

数値が表示されます。

f:id:meison_amsl:20160213140718p:plain

(1230をDecimalChangeした場合)

 

ちなみに符号付きにはまだ対応していません。

必要になったら追加します。

 

最後に

今まで、毎回Webで調べていたので便利です。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

vi/Vim コマンドポケットリファレンス

vi/Vim コマンドポケットリファレンス