aboutsummaryrefslogtreecommitdiffstats

forked from https://github.com/its-wasabi/netrw-icons.nvim

netrw-icons.nvim

A lightweight extension for Neovim's built-in netrw file explorer that adds file icons without replacing or modifying netrw's core functionality.

Example

Features

  • Icon support: works with nvim-web-devicons, mini.icons, or manually specified via config
  • Customizable: Override icons per file type or extension
  • Lightweight: Minimal performance impact

Requirements

Installation

Using lazy.nvim

{
  "Fasamii/netrw-icons.nvim",
  dependencies = {
    "nvim-tree/nvim-web-devicons", -- or "echasnovski/mini.icons"
  },
  config = function()
    require("netrw-icons").setup()
  end,
}

Using packer.nvim

use {
  "Fasamii/netrw-icons.nvim",
  requires = {
    "nvim-tree/nvim-web-devicons", -- or "echasnovski/mini.icons"
  },
  config = function()
    require("netrw-icons").setup()
  end,
}

Using vim-plug

Plug 'nvim-tree/nvim-web-devicons' " or 'echasnovski/mini.icons'
Plug 'Fasamii/netrw-icons.nvim'

" In your init.vim or after plug#end()
lua require("netrw-icons").setup()

Configuration

Default Configuration

require("netrw-icons").setup({
    -- Icon provider preference: "devicons", "miniicons", or nil for auto-detect
    prefer = nil,
  
    -- Show generic file icon when no specific icon is found for a file type
    icon_fallback = true,
  
    -- Custom icons per file extension
    -- Can be a string (icon only) or a table { icon, highlight_group }
    -- for example: lua = { "WOAH: " },
    -- or: lua = {"WOAH: ", "Normal"},
    file = {

        -- Reserved keys for special file types
        dir = " ", -- Directory icon
        sym = { " ", "Special" }, -- Symlink icon
        exe = " ", -- Executable icon
    },
})

Configuration Examples

Prefer Specific Icon Provider

require("netrw-icons").setup({
  prefer = "devicons", -- or "miniicons"
})

Custom Icons

require("netrw-icons").setup({
  file = {
    dir = " ",
    sym = " ",
    exe = "EXE FILE HERE: ",
    
    lua = "LUA ---->",
    md = " ",
    
    -- Table format (icon + highlight group)
    ts = { "󰛦 ", "Type" },
    js = { "󰛦 ", "Keyword" },
  },
})

Disable Default Icons

require("netrw-icons").setup({
  icon_fallback = false, -- Only show icons for explicitly defined types found by provider or in
                         -- the file = {} table
})

Supported Netrw List Styles

Currently, this plugin supports:

  • Style 0: let g:netrw_liststyle = 0
  • Style 1: let g:netrw_liststyle = 1
  • Style 3: let g:netrw_liststyle = 3

To set style of netrw:

" In init.vim
let g:netrw_liststyle = 3 " or 0 or 1

Or for neovim:

-- In init.lua
vim.g.netrw_liststyle = 3 -- or 0 or 1