リストの差分

id:celt69cobra「Vimscriptでリストの差分を抽出する関数ってあんの?」

:h functionsをみても分からなかったのでやってみた。

function! s:diff(list1, list2) abort
  return filter(copy(a:list1), 'index(a:list2, v:val) == -1')
        \ + filter(copy(a:list2), 'index(a:list1, v:val) == -1')
endfunction


let list1 = ['foo', 'bar', 'buzz']
let list2 = ['buzz', 'foo', 'piyo']

echo s:diff(list1, list2)
" ['bar', 'piyo']

echo s:diff(list2, list1)
" ['piyo', 'bar']                          

こんな感じ?