2012-04-26 9 views
5

Jeśli użyję ctrl-a do zwiększenia liczby heksadecymalnej (lub ctrl-x do zmniejszenia), liczba będzie pisana małymi literami, jeśli obecnie nie ma żadnych innych wielkich liter.Tworzenie wielkimi literami heksadecymalnymi w vimie przy użyciu ctrl-a do zwiększania

Na przykład, jeśli zwiększam 0x009, otrzymuję 0x00a, ale jeśli zwiększam 0xA09, otrzymuję 0xA0A.

chcę go domyślnie używając dużych liter. Czy ktoś wie, jak to zrobić? Czy ktoś inny to obchodzi?

+0

+1 do tradycji dnia: 'Ctrl-A' i' Ctrl-x' :) – Niloct

+0

Polecenia mogą być bardzo przydatne w makr. – Dean

Odpowiedz

5

Jeden trudne sposób:

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

Objaśnienie:

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. 

Więc ten sposób tworzy małe odmienne zachowanie od oryginalnego <C-A>, na przykład, w tym przypadku:

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

Ustawi się 0x0ba w 0x0BB, ale kursor będzie com e wróć do litery n z number, insteat ustawiając swoją pozycję w liczbie inkrementowanej. Możesz grać ze znakami, aby zmienić to zachowanie. Mam nadzieję, że to pomoże.

+0

Bardzo dobrze wyjaśnione, dziękuję! – Dean

+0

Usunąłem 'm'' i' \ '\' ', aby zachęcić go do zachowania się bliżej pierwotnego zachowania. – Dean

+0

Wiem, że to pytanie ma trzy lata, ale pomyślałem, że podkreślić, że to rozwiązanie działa tylko jeśli używasz '' tylko na wartości szesnastkowe. Jak tylko użyjesz go na liczbie dziesiętnej, rzeczy mogą zostać popsute. Zrobiłem się ponadto, że wprawdzie jest "cięższe", ale również bardziej wytrzymałe: 'noremap wyszukiwanie (x \\ | \ (\ <\)", "bpcn") == 1? "\ vUgUTxFxe": "\ " noremap szukaj ('x \\ | \ (\ <\)', "bpcn") == 1? "\ vUgUTxFxe": "\ " ' to nie szukaj na X, aby określić, czy jest to cyfra hex. Jeśli tak, to w zasadzie robi to, co sugeruje Birei. Inaczej nie ma wielkich liter. – Tumbler41

4

Można przedrostek stałych szesnastkowych z 0X zamiast 0x, aby sprawić, że Vim używać wielkich liter podczas dodawania lub odejmowania od nich.

+0

To jest dobra uwaga. Jednak szukam specjalnie dla małych liter 'x' z wartościami szesnastkowymi wielkimi literami. Jestem trochę wybredny, jeśli pytanie go nie zdradziło;) – Dean

Powiązane problemy