2012-04-26 27 views
5

Nếu tôi sử dụng ctrl-a để tăng số hex (hoặc ctrl-x để giảm) số sẽ sử dụng chữ thường nếu hiện không có chữ hoa nào khác.Tạo chữ cái in hoa theo phương pháp vim khi sử dụng ctrl-a để tăng

Ví dụ: nếu tôi tăng 0x009 Tôi nhận được 0x00a nhưng nếu số gia tăng 0xA09 Tôi nhận được 0xA0A.

Tôi muốn mặc định sử dụng chữ in hoa. Có ai biết cách để làm điều này không? Có ai quan tâm không?

+0

+1 cho truyền thuyết trong ngày: 'Ctrl-a' và' Ctrl-x' :) – Niloct

+0

Các lệnh có thể rất hữu ích trong macro. – Dean

Trả lời

5

Một cách khéo léo:

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

Giải thích:

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. 

Vì vậy, cách này tạo ra một hành vi nhỏ khác nhau từ gốc <C-A>, ví dụ, trong trường hợp này:

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

Sẽ đặt 0x0ba trong 0x0BB nhưng con trỏ sẽ com e quay lại chữ cái n từ number, insteat đặt vị trí của nó trong số tăng lên. Bạn có thể chơi với các dấu để thay đổi hành vi này. Tôi hy vọng điều này có thể giúp bạn.

+0

Rất tốt giải thích, cảm ơn bạn! – Dean

+0

Tôi đã xóa 'm'' và' \ '\' 'để làm cho nó hoạt động chặt chẽ hơn với hành vi ban đầu. – Dean

+0

Tôi biết câu hỏi này là ba tuổi, nhưng tôi nghĩ tôi muốn chỉ ra rằng giải pháp này chỉ hoạt động nếu bạn sử dụng '' chỉ trên giá trị hex. Ngay sau khi bạn sử dụng nó trên một số thập phân mọi thứ có thể nhận được điều sai lầm. Tôi đã bổ sung rằng, phải thừa nhận là "nặng hơn", nhưng cũng mạnh mẽ hơn: 'noremap tìm kiếm ('x \\ | \ (\ <\)'," bpcn ") == 1? "\ vUgUTxFxe": "\ " noremap tìm kiếm ('x \\ | \ (\ <\)', "bpcn") == 1? "\ vUgUTxFxe": "\ " ' Điều này thực hiện tìm kiếm dấu x để xác định xem đó có phải là chữ số hex hay không. Nếu đúng như vậy, về cơ bản nó là những gì mà Birei đã gợi ý. Khác không viết hoa. – Tumbler41

4

Một hằng số thập lục phân có thể có tiền tố với 0X thay vì 0x để làm cho Vim sử dụng chữ cái viết hoa khi thêm hoặc trừ chúng.

+0

Đây là một điểm tốt. Tuy nhiên tôi đang tìm kiếm cụ thể cho một chữ thường 'x' với các giá trị hex trong chữ hoa. Tôi hơi bối rối nếu câu hỏi không cho nó đi;) – Dean

Các vấn đề liên quan