有没有办法用 VIM 增加 %z 十六进制数?通常我可以通过对普通数字执行 ctrl + a 来做到这一点。但不幸的是,我使用的是旧式系统,该系统使用 %z 而不是 0x 来表示十六进制数。我试过了

Set nf=hex

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

最佳答案

我不知道这个 %z 前缀;但是我尝试了一个快速而肮脏的函数来增加像 %z0f; 这样的数字;这是你想要的吗?然后你应该能够向它添加一个映射(但不是它本身,因为它在函数中使用!)像 :map <C-p> :call MyIncrement()<CR>
当然你应该根据你的需要定制它;第 17 行在增量后重置光标的位置;你可能想用 l:c (或者甚至 l:b )替换 l:a 并选择你最喜欢的。

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

关于vim - 使用 VIM 增加 %z 十六进制数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33445762/

10-10 09:57