devicon-lookup

Prepend the correct devicon to the beginning of each filename

VIM Usage

The primary use case for this was for usage with fzf in VIM. It was created based on this issue about trying to add support for fzf to an existing devicons projects. https://github.com/ryanoasis/vim-devicons/issues/106

Here is the quickstart Vim Config

" Files + devicons function! Fzf_files_with_dev_icons(command) let l:fzf_files_options = '--preview "bat --color always --style numbers {2..} | head -'.&lines.'"' function! s:edit_devicon_prepended_file(item) let l:file_path = a:item[4:-1] execute 'silent e' l:file_path endfunction call fzf#run({ \ 'source': a:command.' | devicon-lookup', \ 'sink': function('s:edit_devicon_prepended_file'), \ 'options': '-m ' . l:fzf_files_options, \ 'down': '40%' }) endfunction function! Fzf_git_diff_files_with_dev_icons() let l:fzf_files_options = '--ansi --preview "sh -c \"(git diff --color=always -- {3..} | sed 1,4d; bat --color always --style numbers {3..}) | head -'.&lines.'\""' function! s:edit_devicon_prepended_file_diff(item) echom a:item let l:file_path = a:item[7:-1] echom l:file_path let l:first_diff_line_number = system("git diff -U0 ".l:file_path." | rg '^@@.*\+' -o | rg '[0-9]+' -o | head -1") execute 'silent e' l:file_path execute l:first_diff_line_number endfunction call fzf#run({ \ 'source': 'git -c color.status=always status --short --untracked-files=all | devicon-lookup', \ 'sink': function('s:edit_devicon_prepended_file_diff'), \ 'options': '-m ' . l:fzf_files_options, \ 'down': '40%' }) endfunction " Open fzf Files map <C-f> :call Fzf_files_with_dev_icons($FZF_DEFAULT_COMMAND)<CR> " :Files map <C-d> :call Fzf_git_diff_files_with_dev_icons()<CR> " :GFiles? map <C-g> :call Fzf_files_with_dev_icons("git ls-files \| uniq")<CR> " :GFiles

For more details see the accompanying blog post https://coreyja.com/blog/2018/11/17/vim-fzf-with-devicons.html