Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimで連番の作成

$
0
0

概要

連続した数字を入れる方法です。

期待値

1
2
3
4
5
:                      

手順1

マクロを使用する方法です。

  1. i1<esc>数字を一つ入れて、
  2. qqyyp<c-a>qマクロを開始
  3. マクロ実行 ( コマンド 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>|"
"}}}

Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>