Ответ 1
В этом случае я обычно набираю r, а затем цифру, которую я хочу.
В 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, но я не уверен, существует ли такой ярлык, поэтому любые советы очень ценятся!
В этом случае я обычно набираю r, а затем цифру, которую я хочу.
<C-a>
и <C-x>
работают с целыми числами (1 или более цифр), но не на "частях" числа. Однако он принимает "счет", поэтому 10<C-a>
превращает [6]5
в 75
.
Другим вариантом, поскольку вы хотите изменить только одну цифру, было бы сделать r7
, чтобы превратить [6]5
в 75
.
Как мне кажется, 3 [9] 42 станет 4042 (иначе решение Xavier почти идеально (*)), я бы использовал следующее:
s/\d*\%#\d/\=(submatch(0)+1)
Что можно было бы отобразить в:
nnoremap <silent> µ :<c-u>s/\d*\%#\d/\=(submatch(0)+v:count1)<cr>``
чтобы принять счет. Единственный улов, который я вижу, заключается в том, что он не может поддерживать повторение (как в :h .
)
(*) В том смысле, что повторение команды не поможет нам увеличивать серию разных чисел на одну и ту же сумму.
Вероятно, лучший способ, но вы можете сделать макрос или что-то, что соответствует этому:
noremap <LEADER>a a <ESC>h<C-a>lxh
noremap <LEADER>z a <ESC>h<C-z>lxh
В основном это делает "65" "6 5", увеличивает 6 и удаляет пробел. Вероятно, это будет более короткая версия, которая тоже будет работать.
Вы можете сделать это как (используйте что-нибудь с F9):
:nnoremap <F9> :exec '[email protected]^\(.\{' . (col(".")-1) . '\}\)\(.\)\(.*\)@\1' . (getline(".")[col(".")-1]+1) . '\[email protected]'<CR>
В основном он просто находит положение курсоров в строках, строит на нем строку регулярных выражений и использует символ в этой позиции, чтобы добавить 1.
В глобальной команде используйте Ctrl v для вставки литерала Ctrl a, что означает, что в обычном режиме каждый номер \d\+
увеличивается на 10
:g/\d\+/norm! 10 Ctrl-v Ctrl-a
В обычном режиме вы можете просто:
10 Ctrl-a
Если вы не против испортить регистр "
, вот еще одна последовательность, которая делает это:
s<C-R>=<C-R>"+1<CR>