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

  

原文地址:https://www.cnblogs.com/hyaray/p/9022085.html