用VIM增加%z十六进制数?

有没有办法用VIM增加%z十六进制数?通常我只需对正常数字执行ctrl a即可.但不幸的是,我使用的是使用%z而不是0x来表示十六进制数字的旧学校系统.我试过了

Set nf=hex

但遗憾的是,这只适用于0x十六进制数字.有没有人遇到过这个?我在谷歌机器上找不到太多东西.

最佳答案 我不知道这个%z前缀;但我尝试了一个快速而又脏的函数,增加了像%z0f这样的数字;这是你想要的吗?然后你应该能够为它添加一个映射(但不是它本身,因为它在函数中使用!),如:map< C-p> :调用MyIncrement()< CR>

当然你应该根据你的需要定制它;第17行在进行后重置光标的位置;你可能想用l:b(或者甚至是l:a)替换l:c并选择你最喜欢的.

function! MyIncrement()
  let l:l = line(".")
  let l:c = col(".")
  let l:a = 0
  let l:b = 0

  let l:s = search('%z[0-9a-f]\+', 'bcW',l:l)
  if l:s == l:l
    let l:a = col(".")
    let l:s = search('%z[0-9a-f]\+', 'ecW',l:l)
    let l:b = col(".")
    if ((l:a<=l:c)&&(l:c<=l:b))
      call cursor(l:l, l:a+2)
      silent exe "normal i 0x\e\<C-a>"
      call cursor(l:l, l:a+2)
      silent exe "normal 3x"
      call cursor(l:l, l:c)
    endif
  endif
endfunction
点赞