概要
連続した数字を入れる方法です。
期待値
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]
letcol= 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 : 数字の削除"================================================================================letcol=match(lstr,'\d\D\|\d$',col)+1" カーソル後に数字がある場合は処理するifcol>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]))endifendfunction
command!-narg=0 SetNum callg:set_num()nnoremap<C-s> :<C-u>SetNum<CR>|"
"}}}