Подтвердить что ты не робот

Как вы увеличиваете число * непосредственно * под курсором?

В vim и др. вы можете увеличить или уменьшить число вашего курсора, используя CTRL A и CTRL X. Однако это увеличивает общее число, но я хотел бы просто увеличить число непосредственно под курсором. Здесь немного сложно описать, что я имею в виду:

Ctrl+A usage, cursor is over the "6":
[6]5 -> 66

What I need:
[6]5 -> 75

or:
3[8]90 -> 3990

Надеюсь, это имеет смысл.

Я немного искал Google, но я не уверен, существует ли такой ярлык, поэтому любые советы очень ценятся!

4b9b3361

Ответ 1

В этом случае я обычно набираю r, а затем цифру, которую я хочу.

Ответ 2

<C-a> и <C-x> работают с целыми числами (1 или более цифр), но не на "частях" числа. Однако он принимает "счет", поэтому 10<C-a> превращает [6]5 в 75.

Другим вариантом, поскольку вы хотите изменить только одну цифру, было бы сделать r7, чтобы превратить [6]5 в 75.

Ответ 3

Как мне кажется, 3 [9] 42 станет 4042 (иначе решение Xavier почти идеально (*)), я бы использовал следующее:

s/\d*\%#\d/\=(submatch(0)+1)

Что можно было бы отобразить в:

nnoremap <silent> µ :<c-u>s/\d*\%#\d/\=(submatch(0)+v:count1)<cr>``

чтобы принять счет. Единственный улов, который я вижу, заключается в том, что он не может поддерживать повторение (как в :h .)

(*) В том смысле, что повторение команды не поможет нам увеличивать серию разных чисел на одну и ту же сумму.

Ответ 4

Вероятно, лучший способ, но вы можете сделать макрос или что-то, что соответствует этому:

noremap <LEADER>a a <ESC>h<C-a>lxh
noremap <LEADER>z a <ESC>h<C-z>lxh

В основном это делает "65" "6 5", увеличивает 6 и удаляет пробел. Вероятно, это будет более короткая версия, которая тоже будет работать.

Ответ 5

Вы можете сделать это как (используйте что-нибудь с F9):

:nnoremap <F9> :exec '[email protected]^\(.\{' . (col(".")-1) . '\}\)\(.\)\(.*\)@\1' . (getline(".")[col(".")-1]+1) . '\[email protected]'<CR>

В основном он просто находит положение курсоров в строках, строит на нем строку регулярных выражений и использует символ в этой позиции, чтобы добавить 1.

Ответ 6

В глобальной команде используйте Ctrl v для вставки литерала Ctrl a, что означает, что в обычном режиме каждый номер \d\+ увеличивается на 10

:g/\d\+/norm! 10 Ctrl-v Ctrl-a

В обычном режиме вы можете просто:

10 Ctrl-a

Ответ 7

Если вы не против испортить регистр ", вот еще одна последовательность, которая делает это:

s<C-R>=<C-R>"+1<CR>