sortの次は、uniqです。重複している要素を削除します。
:let a = [5,3,7,2,9,0,3,5,2] :echo sort(a)
2,3,5が重複していますね。uniq関数を実行してみます。
:echo uniq(sort(a))
Vimバッファ上のテキストでやってみます。
0~9のランダムの数値を100個ならべて、
:0r!wsl for i in `seq 100`;do expr $RANDOM \% 10;done | wsl pr -t5J
これをVimスクリプトで、sortしてuniqします。
まずは、取り込み。
:let a=getline("w0","w$") :let out=[] :call map(a,'extend(g:out,split(v:val,"\t"))') :echo out
uniqは親切にも破壊的置換をしてくれるので、コピーしたリストの方をuniqします。
:let b = copy(out) :call uniq(sort(b)) :echo b
コメント