Vim中增加ga键的vmap功能

ga是Vim自带的显示光标字符编码的功能,但是反过来,没有从编码显示对应字符的功能。

因为编码是多位数,所以可视模式下写了此功能。

规则:

  • 纯数字认为是10进制
  • 其他情况都认为是16进制
  • 纯数字的话,前面加0x或\x或\u开头都可以强制认定为16进制

此函数顺便把结果放入了无名寄存器,按p即可输出。

选中22909按ga,则显示<22909> 0x597d 好

选中597d或0x597d或\x597d或\u597d,则显示<0x597d> 22909 好

在vimrc中添加以下代码即可实现。

vnoremap ga y:call hy_string#get#GetNumAndChar(@0)<CR>
"获取数字的各种格式及对应的字符 function! hy_string#get#GetNumAndChar(num) abort "let n = hy_string#get#Select() let n = a:num let reg16 = '\v^(\\x|0x|\\?u)' if n =~? '\v^\d+$' "10进制 let n1 = '0x' . printf('%x', n) else "16进制 if n =~? reg16 "带了前面的标识符 let n = '0x'.substitute(n,reg16,'','g') else let n = '0x' . n endif let n1 = printf('%d', n) endif let @" = '<' . n . '> ' . n1 . ' ' . nr2char(n1) echo @" endfunction

  

posted @ 2018-05-10 22:12  火冷  阅读(687)  评论(0编辑  收藏  举报