Ctrl-を使用して 16 進数Aをインクリメント (またはCtrl-Xをデクリメント) すると、元の数値に大文字が含まれていない限り、結果の数値は小文字で書き込まれます。
たとえば、 をインクリメント すると、 ;0x009
が得られ ます。0x00a
しかし、インクリメントする 0xA09
と、 が得られ 0xA0A
ます。
デフォルトで大文字を使用するようにしたい。誰もこれを行う方法を知っていますか? 他の誰かが気にしますか?
Ctrl-を使用して 16 進数Aをインクリメント (またはCtrl-Xをデクリメント) すると、元の数値に大文字が含まれていない限り、結果の数値は小文字で書き込まれます。
たとえば、 をインクリメント すると、 ;0x009
が得られ ます。0x00a
しかし、インクリメントする 0xA09
と、 が得られ 0xA0A
ます。
デフォルトで大文字を使用するようにしたい。誰もこれを行う方法を知っていますか? 他の誰かが気にしますか?
1 つのトリッキーな方法:
: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
。インクリメントされた番号の位置を設定する代わりに。マークを操作して、この動作を変更できます。これが役立つことを願っています。
+および+コマンドを使用して 16 進数の定数に追加または減算するときに大文字を使用するように、16 進数の定数の前に0X
の代わりにを付けることができます。0x
CtrlACtrlX
完璧な解決策ではありませんが、一般的な方法でそれを行う方法を思い出すよりも、影響を受ける番号のプレフィックスを Vim の好みに合わせて変更し、インクリメントまたはデクリメントしてから、プレフィックスを元に戻す方が簡単な場合がよくあります。