Vimスクリプト(uniq)

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

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA