vim-quickui
vim-quickui copied to clipboard
The missing UI extensions for Vim 9 (and NeoVim) !! :sunglasses:
What Is It ?
There are many keymaps defined in my .vimrc. Getting tired from checking .vimrc time to time when I forget some, based on the latest +popup feature (vim 8.2), I created this vim-quickui plugin to introduce some basic UI components to enrich vim's interactive experience:
- Well designed and carefully colored Borland/Turbo C++ flavor ui system combined with vim's productivity.
- Can be accessed by keyboard only while mouse is also supported.
- Navigate with the usual Vim keys like
h/j/k/l, confirm withENTER/SPACEand cancel withESC/Ctrl+[. Tipfor each entry can display in the cmdline when you are moving the cursor around.- Available widgets: menu, listbox, inputbox, textbox.. (coming soon)
- Fully customizable, including color scheme and borders.
- Corresponding experience in both
VimandNeoVim. - Pure vim-script,
+pythonis not required. - No longer have to be afraid to forget keymaps anymore.
Just see this GIF demonstration below:

Trying to share my configuration to my friends, I found that they did't have patience to remember all the keymaps in my vimrc, but text ui is quite acceptable for them.
Content
- What Is It ?
- Content
- Requirements
- Installation
- Gallery Screenshot
- Menu
- Listbox
- Inputbox
- Context menu
- Textbox
- Preview window
- Terminal
- Confirm dialog
- User Manual
- Who Am I ?
- Credit
Requirements
- Vim: 8.2 or later.
- NeoVim: 0.4.0 or later.
Installation
Plug 'skywind3000/vim-quickui'
For more information, please see the User Manual.
Gallery Screenshot
Menu
Display a dropdown menubar at top of the screen, use hjkl or mouse to navigate:

Customizable border style:

Menu color schemes:

See: Menu help.
Listbox
When you have hundres of items to deal with, menu is not enough to hold them. Then you will need a listbox.

It has scroll bar, content can be scrolled by keyboard or mouse wheel. You can search items with / or ? command.
It can be used to select buffers or functions in current file:

The cursor will stay in the current function initially. Navigate and press enter to jump to the selected function.
See: Listbox help.
Inputbox
Prompt user to input a string in a TUI box:

Could be used as a drop-in replacement of input() function.
See: Input box help.
Context menu
Context menu imitates Windows context menu (triggered by your mouse right button), which will display around the cursor:

It is usually used to present some commands that will do something with source code in the current line.
The border can be changed too:

Because some terminals or fonts cannot display unicode borders correctly, so QuickUI choose ascii border characters by default. But you can change it as you like.
See: Context menu help.
Textbox
Textbox is used to display arbitrary text in a popup window.

Display vim help with syntax highlighting in the textbox:

With textbox, you can read the help text at anytime in a popup, without creating a new split window.
Display vim messages:

Navigating the messages with HJKL or PageUp/PageDown is much more convenient than using :messages.
See: Text box help.
Preview window
Preview window is used to replace traditional pedit command and can be used to display certain file in a small popup window around your cursor:

Sometimes I just want a glimpse to the definition of the current word under cursor without actually open that file, the preview window is much helpful for this.
Use it to preview quickfix result:

If you have many items in the quickfix window, instead of open them one by one, you are able to press p in the quickfix window and preview them in the popup.
See: Preview window help.
Terminal
The terminal widget can allow you open a terminal in the popup window:

This feature require vim 8.2.200 (nvim 0.4.0) or later, it enables you to run various tui programs in a dialog window.
See: Terminal help.
Confirm dialog
This widget offers user a dialog, from which a choice can be made:

It returns the number of the choice. For the first choice, this is 1.
See: Confirm dialog help.
User Manual
To get started, please visit:
- User Manual
For more examples, see my config.
Who Am I ?
My name is Lin Wei, an open source believer and vim enthusiast. I started learning programming in early 1990s. Borland's Turbo Pascal/C++ was the most popular IDE at that time and I really enjoyed the old days, back home from school, powered on my computer, started Turbo c++ 3.1 and studied how to make a game in MS-DOS.
I even imitated Turbo C++ and made my own editor when I moved to Watcom C++:

Because I didn't own a proper editor/IDE for Watcom C++ at that time.
After coming to windows, I tried a lot of GUI-editors, from UltraEdit, editplus to NotePad++, from gedit to geany, none of them could fully satisfy me. Every day I was busy, tired to learn new IDEs/editors or new frameworks, I even forgot the true joy of programming. Eventually I met vim, and soon fell in love with it.
As Vim is evolving nowadays, due to the effort of Bram, 8.2 released. Finally I realise, maybe, it is possible to bring some cool things from 25 years ago to vim now. Maybe I can have a Borland/Turbo C++ flavor vim in my everyday work just like I was learning making PC games in the golden 1990s as a middle school student.
It is time for me to bring these ideas to reality, just start from this plugin.
Credit
like vim-quickui? Follow the repository on GitHub and vote for it on vim.org. And if you're feeling especially charitable, follow skywind3000 on Twitter and GitHub.