/vim-quickui

The missing UI extensions for Vim 8.2 (and NeoVim 0.4) !! :sunglasses:

Primary LanguageVim ScriptMIT LicenseMIT

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 with ENTER/SPACE and cancel with ESC/Ctrl+[.
  • Tip for 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 Vim and NeoVim.
  • Pure vim-script, +python is 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

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:

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.