使用ctrl-a递增时,在vim中创建大写十六进制字母

时间:2012-04-26 20:53:10

标签: vim

如果我使用ctrl-a递增十六进制数字(或ctrl-x递减),如果当前没有其他大写字母,则该数字将使用小写字母。

例如,如果我增加0x009,我会获得0x00a,但如果增加0xA09,我会获得0xA0A

我希望它默认使用大写字母。有谁知道如何做到这一点?还有其他人关心吗?

2 个答案:

答案 0 :(得分:7)

一个棘手的方法:

:nnoremap <C-A> m'<C-A>vUgUTx``

说明:

m'         # Create a mark on digit to increment.
<C-A>      # Control-A
v          # Visual select current letter.
U          # Set visual selection (current letter) to uppercase.
gUTx       # Set to uppercase (gU) next movement: (Tx) from current position to previous 'x' letter.
``         # Go to position of previous mark.

因此,这种方式会创建与原始<C-A>不同的小行为,例如,在这种情况下:

A hex number 0x0ba in lowercase.
      ^--- Cursor position

将在0x0ba中设置0x0BB,但是光标将从n返回到number字母,insteat将其位置设置为递增的数字。您可以使用标记来更改此行为。我希望这可以提供帮助。

答案 1 :(得分:6)

可以使用0X而不是0x为十六进制常量加前缀 使Vim在添加或减去它们时使用大写字母。