追記
7.4.754で、g<C-A>
が追加されたので簡単に連番が作成できます。
概要
連続した数字を入れる方法です。
期待値
1
2
3
4
5
:
手順1
マクロを使用する方法です。
-
i1<esc>
数字を一つ入れて、 -
qqyyp<c-a>q
マクロを開始 - マクロ実行 ( コマンド
100@q
)
手順2
スクリプトを使う方法です。
:call setline(1,range(1,100))
手順3
行が存在する場合は、置換で番号を挿入できます。
:%s/^/\=line(".")
おまけ
前の数字を加算するスクリプトを作っておけば便利です。
function! g:set_num() "{{{
" ********************************************************************************
" 連番の作成
" カーソル以降の数字を、前の数字にひとつ加算したものにする ( マイナスは、考慮しない )
" ********************************************************************************
"
" カーソル位置の取得
let pos = getpos(".")
let lnum = pos[1]
let col = pos[2] - 1
"=====================
" 前の行
"=====================
let lstr = getline(lnum-1)
" 数字の取得
let nums = split(lstr, '\D\+') + [1]
"=====================
" 現在の行
"=====================
let lstr = getline(lnum)
"================================================================================
" 数字の末尾で分割
"--------------------------------------------------------------------------------
" 1 : aaa12(3)4aaaa : () カーソル位置
" 2 : aaa1234 , aaaa : カーソルより後ろの数字の末尾で分割
" 3 : aaa , aaa : 数字の削除
"================================================================================
let col = match(lstr, '\d\D\|\d$', col) + 1
" カーソル後に数字がある場合は処理する
if col > 0
" 数字の前の文字の取得
let head = strpart(lstr, 0, col)
" 数字の数を抽出
let head_ncnt = len(split(head, '\D\+')) - 1
" 文の取得
" 変更する部分の数字は削除する
let str = [
\ substitute(head, '\d\+$','',''),
\ get(nums, head_ncnt, 0) + 1,
\ strpart(lstr, col ),
\ ]
" 書き込み
call setline(lnum, join(str,''))
" カーソル移動
call cursor(lnum, len(str[0].str[1]))
endif
endfunction
command! -narg=0 SetNum call g:set_num()
nnoremap <C-s> :<C-u>SetNum<CR>|"
"}}}