7

Ctrl-を使用して 16 進数Aをインクリメント (またはCtrl-Xをデクリメント) すると、元の数値に大文字が含まれていない限り、結果の数値は小文字で書き込まれます。

たとえば、 をインクリメント すると、 ;0x009が得られ ます。0x00aしかし、インクリメントする 0xA09と、 が得られ 0xA0Aます。

デフォルトで大文字を使用するようにしたい。誰もこれを行う方法を知っていますか? 他の誰かが気にしますか?

4

2 に答える 2

7

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

に設定さ0x0ba0x0BBますが、カーソルは からの文字に戻りnますnumber。インクリメントされた番号の位置を設定する代わりに。マークを操作して、この動作を変更できます。これが役立つことを願っています。

于 2012-04-26T22:06:29.227 に答える
6

+および+コマンドを使用して 16 進数の定数に追加または減算するときに大文字を使用するように、16 進数の定数の前に0Xの代わりにを付けることができます。0xCtrlACtrlX

完璧な解決策ではありませんが、一般的な方法でそれを行う方法を思い出すよりも、影響を受ける番号のプレフィックスを Vim の好みに合わせて変更し、インクリメントまたはデクリメントしてから、プレフィックスを元に戻す方が簡単な場合がよくあります。

于 2012-04-27T01:45:07.553 に答える