リストの差分
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']
こんな感じ?