如果我使用Ctrl-A来增加(或Ctrl-X减少)十六进制数字,则生成的数字将用小写字母书写,除非原始数字中有大写字母。
例如,如果我增加 0x009
,我得到 0x00a
; 但如果我增加 0xA09
,我得到 0xA0A
。
我希望它默认使用大写字母。有谁知道如何做到这一点?还有人关心吗?
如果我使用Ctrl-A来增加(或Ctrl-X减少)十六进制数字,则生成的数字将用小写字母书写,除非原始数字中有大写字母。
例如,如果我增加 0x009
,我得到 0x00a
; 但如果我增加 0xA09
,我得到 0xA0A
。
我希望它默认使用大写字母。有谁知道如何做到这一点?还有人关心吗?
一种棘手的方法:
: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
将设置0x0ba
,0x0BB
但光标将返回到字母n
from number
,而不是将其位置设置为递增的数字。您可以使用标记来改变这种行为。我希望这会有所帮助。
可以在十六进制常量前加上0X
代替,0x
以便让 Vim 在通过Ctrl+A和Ctrl+X命令添加或减去它们时使用大写字母。
这不是一个完美的解决方案,但通常更容易将受影响数字的前缀更改为 Vim 的喜好,增加或减少它,然后将前缀更改回来,而不是回忆如何以一般方式执行此操作。