커서 앞의 숫자를 Vim으로 1 더하기

4702 단어 Vimtech
일반 모드<C-a><C-x>에서 커서 이후의 첫 번째 숫자를 증감합니다.'nrformats' 옵션에 따라 숫자가 아닌 경우도 있음)
이 기능은 커서 이후에 점증 대상이 없으면 아무 일도 일어나지 않습니다.
이것도 커서 앞에서 움직일 수 있으면 좀 편해요.
다음은 1 1 hoge|부터 <C-a>할 수 있다1 2| hoge.|를 커서 위치로 설정합니다.
function! s:inc_or_dec(is_inc) abort
    let key = a:is_inc ? "\<C-a>" : "\<C-x>"
    let line = getline('.')
    let col = col('.')
    let pattern = '\v\d+\ze[^[:digit:]]*$'
    if matchend(line[col - 1:], pattern) == -1
        let idx = matchend(line[:col - 1], pattern)
        if idx != -1
            return printf('%dh%s', col - idx, key)
        endif
    endif
    return key
endfunction

nnoremap <expr> <C-a> <SID>inc_or_dec(v:true)
nnoremap <expr> <C-x> <SID>inc_or_dec(v:false)
커서를 찾은 후 없으면 커서를 찾기 전에 찾습니다.
커서가 커서 앞에 있으면 커서를 일치하는 끝에 다시 놓아 커서를 늘립니다.'nrformats'에 포함alpha된 경우 고려하지 않았다.

좋은 웹페이지 즐겨찾기