7

如果我使用Ctrl-A来增加(或Ctrl-X减少)十六进制数字,则生成的数字将用小写字母书写,除非原始数字中有大写字母。

例如,如果我增加 0x009,我得到 0x00a; 但如果我增加 0xA09,我得到 0xA0A

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

4

2 回答 2

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.

因此,这种方式会产生与 original 不同的行为<C-A>,例如,在这种情况下:

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

将设置0x0ba0x0BB但光标将返回到字母nfrom number,而不是将其位置设置为递增的数字。您可以使用标记来改变这种行为。我希望这会有所帮助。

于 2012-04-26T22:06:29.227 回答
6

可以在十六进制常量前加上0X代替,0x以便让 Vim 在通过Ctrl+ACtrl+X命令添加或减去它们时使用大写字母。

这不是一个完美的解决方案,但通常更容易将受影响数字的前缀更改为 Vim 的喜好,增加或减少它,然后将前缀更改回来,而不是回忆如何以一般方式执行此操作。

于 2012-04-27T01:45:07.553 回答