• Stars
    star
    1,195
  • Rank 39,145 (Top 0.8 %)
  • Language
    Vim Script
  • License
    MIT License
  • Created about 4 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ“ก Blazing fast minimap / scrollbar for vim, powered by code-minimap written in Rust.

๐Ÿ“ก minimap.vim

Blazing fast minimap for vim, powered by ๐Ÿ›ฐ code-minimap written in Rust.

CI License Vim Neovim pre-commit Contributors

screenshot

โœจ Features

  • Blazing-fast (see benchmark).
  • Dynamic scaling.
  • Real-time highlight.
  • It can be used to scroll buffer (in vim's way!).

๐Ÿ“ฅ Installation

Requirement

  • ๐Ÿ›ฐcode-minimap is required. The plugin receives rendered minimap from it.
  • vim8.2+, or neovim 0.5.0+.

Use your favorite plugin manager, vim-plug for example:

Plug 'wfxr/minimap.vim'

If you need to install the plugin manually, you can refer to this issue: #2.

You can use cargo to install 'code-minimap' simultaneously (Only recommended for rust users):

Plug 'wfxr/minimap.vim', {'do': ':!cargo install --locked code-minimap'}

๐Ÿ“‘ Example configuration

let g:minimap_width = 10
let g:minimap_auto_start = 1
let g:minimap_auto_start_win_enter = 1

๐Ÿ›  Commands

Flag Description
Minimap Show minimap window
MinimapClose Close minimap window
MinimapToggle Toggle minimap window
MinimapRefresh Force refresh minimap window
MinimapUpdateHighlight Force update minimap highlight
MinimapRescan Force recalculation of minimap scaling ratio

โš™ Options

Flag Default Description
g:minimap_auto_start 0 if, set minimap will show at startup
g:minimap_auto_start_win_enter 0 if, set with g:minimap_auto_start minimap shows on WinEnter
g:minimap_width 10 the width of the minimap window in characters
g:minimap_window_width_override_for_scaling 2147483647 the width cap for scaling the minimap (see minimap.txt help file)
g:minimap_base_highlight Normal the base color group for minimap
g:minimap_block_filetypes ['fugitive', 'nerdtree', 'tagbar', 'fzf' ] disable minimap for specific file types
g:minimap_block_buftypes ['nofile', 'nowrite', 'quickfix', 'terminal', 'prompt'] disable minimap for specific buffer types
g:minimap_close_filetypes ['startify', 'netrw', 'vim-plug'] close minimap for specific file types
g:minimap_close_buftypes [] close minimap for specific buffer types
g:minimap_left 0 if set, minimap window will append left
g:minimap_highlight_range 1 if set, minimap will highlight range of visible lines
g:minimap_highlight_search 0 if set, minimap will highlight searched patterns
g:minimap_background_processing 0 if set, minimap will use a background job to get the longest line (requires gnu-wc on MacOS)
g:minimap_git_colors 0 if set, minimap will highlight range of changes as reported by git
g:minimap_enable_highlight_colorgroup 1 if set, minimap will create an autocommand to set highlights on color scheme changes.

โš™ Color Options

Minimap.vim sets its own color groups to give a reasonable default.

Flag Default Description
g:minimap_search_color_priority 120 the priority for the search highlight colors
g:minimap_cursor_color_priority 110 the priority for the cursor highlight colors
g:minimap_cursor_color minimapCursor the color group for current position
g:minimap_range_color minimapRange the color group for window range (if highlight_range is enabled)
g:minimap_search_color Search the color group for highlighted search patterns in the minimap
g:minimap_diffadd_color minimapDiffAdded the color group for added lines (if git_colors is enabled)
g:minimap_diffremove_color minimapDiffRemoved the color group for removed lines (if git_colors is enabled)
g:minimap_diff_color minimapDiffLine the color group for modified lines (if git_colors is enabled)
g:minimap_cursor_diffadd_color minimapCursorDiffAdded the color group for the cursor over added lines
g:minimap_cursor_diffremove_color minimapCursorDiffRemoved the color group for the cursor over removed lines
g:minimap_cursor_diff_color minimapCursorDiffLine the color group for the cursor over modified lines
g:minimap_range_diffadd_color minimapRangeDiffAdded the color group for the window range encompassing added lines
g:minimap_range_diffremove_color minimapRangeDiffRemoved the color group for the window range encompassing removed lines
g:minimap_range_diff_color minimapRangeDiffLine the color group for the window range encompassing modified lines

You can create your own colorgroup by specifying the foreground and background colors for the cterm or gui:

:highlight minimapCursor ctermbg=59  ctermfg=228 guibg=#5F5F5F guifg=#FFFF87

For more information, see :help highlight

Note: some colorschemes will clear all previous colors, so you may have to add an autocmd to ensure your custom colorgroups are added back:

autocmd ColorScheme *
        \ highlight minimapCursor            ctermbg=59  ctermfg=228 guibg=#5F5F5F guifg=#FFFF87 |
        \ highlight minimapRange             ctermbg=242 ctermfg=228 guibg=#4F4F4F guifg=#FFFF87

If you prefer to disable this behavior, set g:minimap_enable_highlight_colorgroup to 0 / false. This is useful if you have a color scheme that sets the minimap highlight groups explicitly.

๐Ÿ’ฌ F.A.Q


Highlight and scroll are not working properly.

Check the vim version you are using. minimap.vim requires vim 8.2+ or neovim 0.5.0+.


Integrated with diagnostics or git status plugins?

Not implemented currently but it should be possible. Welcome to contribute!

update: Git support has been implemented #72.


Minimap window is too wide for me, how to use it as a simple scrollbar?

You can reduce the width of the minimap window:

let g:minimap_width = 2

Or use scrollbar.nvim instead if what you want is a pure scrollbar indicator.


How do the color priorities work?

A higher priority color group will override a lower priority color group. By default, search > cursor/window position > git colors


I don't like the default highlight group, how to change it?

Choose any one of the highlight groups (or define a new one) and just set it for minimap like this:

hi MinimapCurrentLine ctermfg=Green guifg=#50FA7B guibg=#32302f
let g:minimap_cursor_color = 'MinimapCurrentLine'

All existed Highlight groups can be displayed by :hi.


Minimap shows up as a jumble of characters?

Check that your encoding is set to utf-8 and not latin1 (for Vim users). Also, ensure that you're using a Unicode-compatible font that has Braille characters in it.


What is g:minimap_highlight_range and how do you use it?

You can have the minimap highlight all the visible lines in your current window by setting g:minimap_highlight_range. If you use Neovim, and your version is recent enough (after November 7, 2020), you can set this option to update the highlight when the window is scrolled.

screenshot-highlight-range


I'm using g:minimap_highlight_search and the highlighted searches don't go away until I :nohlsearch and save!

It is recommended that you create a mapping to run :nohlsearch and clear the minimap all in one action. For example:

nnoremap <silent> `` :nohlsearch<CR>:call minimap#vim#ClearColorSearch()<CR>

I'm using g:minimap_background_processing on MacOS and the minimap isn't working!

The version of wc that ships with MacOS does not have support for the -L flag. To use background processing on MacOS, install gnu-wc. Example via homebrew:

brew install gnu-wc

๐Ÿ“‹ Running Unit Tests

  • Install Testify.
  • From the top level directory (minimap.vim/) vim +TestifySuite for a yay/nay from your shell.
  • For a more detailed run, open vim at the top level and run :TestifySuite. README.md works, but an empty buffer at the top level works too.
  • To hone in on one test file, open that file (located in the t/ directory) and run :TestifyFile.
    • (As a note, the t/ directory is named such as a requirement from Testify. :TestifySuite runs all the tests in the t/ directory)

๐Ÿ“ฆ Related Projects

๐ŸŒผ Maintainers

ZNielsen wfxr rabirabirara
ZNielsen wfxr rabirabirara

๐Ÿ“ƒ License

MIT (c) Wenxuan Zhang

More Repositories

1

forgit

๐Ÿ’ค A utility tool powered by fzf for using git interactively.
Shell
4,375
star
2

code-minimap

๐Ÿ›ฐ A high performance code minimap render.
Rust
605
star
3

csview

๐Ÿ“  Pretty and fast csv viewer for cli with cjk/emoji support.
Rust
572
star
4

tmux-power

๐ŸŽจ Tmux powerline theme
Shell
526
star
5

tmux-fzf-url

๐Ÿš€ Quickly open urls on your terminal screen!
Shell
507
star
6

rlt

A universal load testing framework for Rust, with real-time tui support.
Rust
132
star
7

dotfiles

๐Ÿก My dotfiles
Shell
89
star
8

formarks

๐Ÿ”– Quickly navigate your work path!
Shell
48
star
9

xaj-hydrological-model

ๆ–ฐๅฎ‰ๆฑŸๆฐดๆ–‡ๆจกๅž‹Javaๅฎž็Žฐ
Java
31
star
10

emoji-cli

Ruby
21
star
11

tmux-net-speed

Shell
13
star
12

awesome-stars

A curated list of my GitHub stars!
12
star
13

estunnel

๐Ÿš› Tool for downloading data from elasticsearch cluster.
Rust
9
star
14

clitrans

Yet another command-line translator (Chinese ๐Ÿ”„ English).
Rust
9
star
15

protobuf.vim

Better vim syntax highlighting and indent plugin for Protobuf with grpc, grpc-gateway and grpc-swagger support.
Vim Script
7
star
16

advent-of-code-2021

๐Ÿฆ€ Rust solutions to AoC 2021
Rust
4
star
17

rustgrep

Rust
2
star
18

elastic-tunnel

Tools for downloading data from elasticsearch
Kotlin
2
star
19

tmux-web-reachable

Shell
2
star
20

epoch-cli

๐Ÿ•“ Epoch converter for CLI
Shell
1
star
21

metabase-druid-driver

Clojure
1
star
22

xaj-hydrological-model-demo

ๆ–ฐๅฎ‰ๆฑŸๆจกๅž‹็คบไพ‹
Java
1
star
23

idea-settings

1
star
24

geo-locator

A Kotlin & Java library for fast locating region by GPS coordinates.
Kotlin
1
star
25

vim-gitignore

Vim Script
1
star
26

awm.config

Lua
1
star
27

sort

A collection of sort algorithms
C
1
star
28

forepos

Shell
1
star
29

pbcopy

Just a xclip wrapper
Shell
1
star
30

producer-consumer-model

้€š่ฟ‡ๅคš็บฟ็จ‹ๅฎž็Žฐ็š„็”Ÿไบง่€…/ๆถˆ่ดน่€…ๆจกๅž‹
C++
1
star
31

pso-demo

Particle swarm optimization demo
Java
1
star
32

advent-of-code-2020

๐Ÿฆ€ Rust solutions to AoC 2020
Rust
1
star
33

pso

Particle swarm optimization Java implementation
Java
1
star