Skip to main content
Avante.nvim provides extensive window customization options to match your workflow and preferences.

Window Position

windows.position
'right' | 'left' | 'top' | 'bottom' | 'smart'
default:"right"
Position of the sidebar window:
  • right - Right side of the screen
  • left - Left side of the screen
  • top - Top of the screen (horizontal layout)
  • bottom - Bottom of the screen (horizontal layout)
  • smart - Automatically choose best position
windows = {
  position = "right", -- right | left | top | bottom | smart
}

Window Dimensions

windows.width
number
default:"30"
Width of the sidebar as percentage of available width (for vertical layouts)
windows.height
number
default:"30"
Height of the sidebar as percentage of available height (for horizontal layouts)
windows = {
  position = "right",
  width = 30,  -- 30% of screen width
  height = 30, -- 30% of screen height (for horizontal layout)
}

Text Wrapping

windows.wrap
boolean
default:"true"
Enable text wrapping in windows (similar to vim.o.wrap)
windows = {
  wrap = true, -- Enable text wrapping
}

Fill Characters

windows.fillchars
string
default:"eob: "
Characters used to fill empty lines (end of buffer)
windows = {
  fillchars = "eob: ", -- Hide end-of-buffer ~ characters
}
Customize the sidebar header appearance:
windows.sidebar_header.enabled
boolean
default:"true"
Enable or disable the sidebar header
windows.sidebar_header.align
'left' | 'center' | 'right'
default:"center"
Alignment of the header title
windows.sidebar_header.rounded
boolean
default:"true"
Use rounded borders for the header
windows.sidebar_header.include_model
boolean
default:"false"
Include the current model name in the header
windows = {
  sidebar_header = {
    enabled = true,
    align = "center", -- left | center | right
    rounded = true,
    include_model = false,
  },
}

Example: Minimal Header

windows = {
  sidebar_header = {
    enabled = true,
    align = "left",
    rounded = false,
    include_model = true, -- Show model in header
  },
}

Spinner Animation

Customize the loading spinner characters:
windows.spinner.editing
string[]
Spinner frames shown while editing code
windows.spinner.generating
string[]
Spinner frames shown while generating responses
windows.spinner.thinking
string[]
Spinner frames shown while AI is thinking
windows = {
  spinner = {
    editing = { "⡀", "⠄", "⠂", "⠁", "⠈", "⠐", "⠠", "⢀", "⣀", "⢄", "⢂", "⢁", "⢈", "⢐", "⢠", "⣠", "⢤", "⢢", "⢡", "⢨", "⢰", "⣰", "⢴", "⢲", "⢱", "⢸", "⣸", "⢼", "⢺", "⢹", "⣹", "⢽", "⢻", "⣻", "⢿", "⣿" },
    generating = { "·", "✢", "✳", "∗", "✻", "✽" },
    thinking = { "🤯", "🙄" },
  },
}

Example: Simple Spinner

windows = {
  spinner = {
    editing = { "|", "/", "-", "\\" },
    generating = { ".", "..", "..." },
    thinking = { "💭", "💡" },
  },
}

Input Window

windows.input.prefix
string
default:"> "
Prefix shown in the input window
windows.input.height
number
default:"8"
Height of the input window in vertical layout (number of lines)
windows = {
  input = {
    prefix = "> ",
    height = 8, -- 8 lines tall
  },
}

Selected Files Window

windows.selected_files.height
number
default:"6"
Maximum height of the selected files window
windows = {
  selected_files = {
    height = 6, -- Max 6 lines
  },
}

Edit Window

windows.edit.border
string | table
default:"{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }"
Border style for the edit window
windows.edit.start_insert
boolean
default:"true"
Automatically enter insert mode when opening edit window
windows = {
  edit = {
    border = "rounded", -- or { " ", " ", " ", " ", " ", " ", " ", " " }
    start_insert = true,
  },
}

Border Styles

Available border styles:
  • "rounded" - Rounded corners
  • "single" - Single line border
  • "double" - Double line border
  • "solid" - Solid border
  • "shadow" - Shadow effect
  • { " ", " ", " ", " ", " ", " ", " ", " " } - Custom characters (top, right, bottom, left, topleft, topright, bottomright, bottomleft)

Ask Window

windows.ask.floating
boolean
default:"false"
Open the Ask prompt in a floating window instead of sidebar
windows.ask.border
string | table
default:"{ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }"
Border style for the ask window
windows.ask.start_insert
boolean
default:"true"
Automatically enter insert mode when opening ask window
windows.ask.focus_on_apply
'ours' | 'theirs'
default:"ours"
Which diff to focus after applying changes
windows = {
  ask = {
    floating = false,
    border = "rounded",
    start_insert = true,
    focus_on_apply = "ours", -- ours | theirs
  },
}

Complete Window Configuration Example

windows = {
  -- Layout
  position = "right",
  width = 30,
  height = 30,
  wrap = true,
  fillchars = "eob: ",
  
  -- Sidebar header
  sidebar_header = {
    enabled = true,
    align = "center",
    rounded = true,
    include_model = false,
  },
  
  -- Spinner animations
  spinner = {
    editing = { "⡀", "⠄", "⠂", "⠁", "⠈", "⠐", "⠠", "⢀", "⣀", "⢄", "⢂", "⢁", "⢈", "⢐", "⢠", "⣠", "⢤", "⢢", "⢡", "⢨", "⢰", "⣰", "⢴", "⢲", "⢱", "⢸", "⣸", "⢼", "⢺", "⢹", "⣹", "⢽", "⢻", "⣻", "⢿", "⣿" },
    generating = { "·", "✢", "✳", "∗", "✻", "✽" },
    thinking = { "🤯", "🙄" },
  },
  
  -- Input window
  input = {
    prefix = "> ",
    height = 8,
  },
  
  -- Selected files window
  selected_files = {
    height = 6,
  },
  
  -- Edit window
  edit = {
    border = { " ", " ", " ", " ", " ", " ", " ", " " },
    start_insert = true,
  },
  
  -- Ask window
  ask = {
    floating = false,
    border = { " ", " ", " ", " ", " ", " ", " ", " " },
    start_insert = true,
    focus_on_apply = "ours",
  },
}
For best results with Avante windows, set these Neovim options:
-- Global statusline (allows full collapse of views)
vim.opt.laststatus = 3

-- Better window splitting
vim.opt.splitright = true
vim.opt.splitbelow = true

Layout Examples

windows = {
  position = "right",
  width = 30,
}
┌─────────────────┬─────────┐
│                 │         │
│  Code Editor    │ Avante  │
│                 │ Sidebar │
│                 │         │
└─────────────────┴─────────┘
windows = {
  position = "left",
  width = 30,
}
┌─────────┬─────────────────┐
│         │                 │
│ Avante  │  Code Editor    │
│ Sidebar │                 │
│         │                 │
└─────────┴─────────────────┘

Bottom Panel

windows = {
  position = "bottom",
  height = 30,
}
┌─────────────────────────┐
│                         │
│     Code Editor         │
│                         │
├─────────────────────────┤
│   Avante Sidebar        │
└─────────────────────────┘

Window Focus Behavior

behaviour.auto_focus_sidebar
boolean
default:"true"
Automatically focus the sidebar when opening Avante
behaviour.auto_focus_on_diff_view
boolean
default:"false"
Automatically focus the diff view when changes are applied
behaviour = {
  auto_focus_sidebar = true,
  auto_focus_on_diff_view = false,
}

Tips

Use position = "right" with width = 30 for a comfortable vertical layout that doesn’t take too much screen space.
For ultrawide monitors, increase width to 40-50 to take advantage of extra screen space.
Set wrap = true to avoid horizontal scrolling in the sidebar, especially useful for longer AI responses.
Use sidebar_header.include_model = true if you frequently switch between different AI models.

Build docs developers (and LLMs) love