sponsor Vim development Vim logo Vim Book Ad

vimuiex : Vim UI extensions: a pack of plugins that use an overlapping  popup list

 script karma  Rating 42/14, Downloaded by 3563  Comments, bugs, improvements  Vim wiki

created by
Marko Mahnič
script type
Vim user interface extension

requires: VxLib (vimscript#3061)

The plugin implements a popup listbox (an overlapping window). The listbox can display an array of stirng items and can be navigated with the usual Vim keys. The list can be narrowed by interactively applying a filter.

The listbox is available in console when Vim is built with "+python" and the Python curses library is available. For GVim a patch that adds the feature "+python_screen" is required (see below).

Screenshots: http://vimuiex.sourceforge.net/screenshot/tvimmenu.png.html

The commands defined by the plugin are listed below. When a popup listbox appears, you can pres F1 to display the list of keys/commands that are active in the listbox. You can always close a listbox with Esc or q in default mode. The basic operation is described at:

Opening files, selecting buffers:
   * VxBufListSelect:
     Buffer explorer/manager.
   * VxOpenRecentFile:
     Display a list of recent files, open selected file.
   * VxFileBrowser:
     Browse the local filesystem to open some files.  Recent directory list is available to find files faster.
   * VxFileFilter:
     Display a list of files in current directory and subdirectories to a certain depth to open some files.

Finding text:
   * VxOccurRegex:
     Display all occurences of a string in the listbox. The search range can be a buffer, a directory or a directory with its subdirectories. Uses vimgrep or external grep for directory searches.
   * VxOccurCurrent:
     Capture output from [I and show it in the listbox.
   * VxOccurTags:
     Process current file with ctags, show results in the listbox.
   * VxOccurRutines:
     Display the lines that match a predefined regular expression for current filetype. Example implementations for: Vim, Python, D, LaTeX, BibTex, Html, Slice.
   * VxSourceTasks:
     Display TODO/Task items in source files. The search range can be defined like with VxOccurRegex.
   Every command in this section stores its results in vxoccur history. A recent set of search results can be activated with :VxOccurSelectHist without running an expensive search command again.The commands :VxCPrev and :VxCNext select items while the list is closed. The command :VxOccurHist redisplays the active list.

   A helper plugin VxMap enables a faster navigation through the list of results (and also the following: buffers, tabs, errorlist, locationlist).

Extended builtin commands:
   * VxTextMenu:
     Display the Vim menu in the listbox, select items from menu.
   * VxDisplay:
     Display the output of :display, insert or execute selected register.
   * VxMarks:
     Display the output of :marks, jump to mark
   * VxCmd:
     Display the output of any command in a listbox
   * The file vxcmdhist.vim:
     Implements a function that displays the command line history in a listbox when PgUp is pressed

Moving around:
   Commands require "+python_screen" (download the patch below):
   * VxLineJump:
     Display lables in the line-number area and jump to selected label.
   * VxWindowJump:
     Display a label in the center of every window and jump to selected window.


Patch and prebuilt binaries: http://sourceforge.net/projects/vimuiex/files/
Detailed descriptions: http://vimuiex.sourceforge.net/plugins.html
Example keymap: http://vimuiex.sourceforge.net/vimmapexmpl.html

install details
  - Install Python 2.6
  - Install vimscript#3061 (VxLib, 0.7.0 or newer)

To install:
  - Download vimuiex.zip
  - Extract the zip archive into your runtime directory (eg. ~/.vim).
  - To regenerate the documentation start Vim and execute:
      :helptag <your runtime directory>/doc

Most of the plugins will work in Linux console Vim (using the Python Curses library).
Other versions must use the vim internal implementation for drawing windows, for which a patch must be applied to Vim.
The patch and the prebuilt binaries for Windows are available at:


rate this script Life Changing Helpful Unfulfilling 
script versions (upload new version)

Click on the package to download.

package script version date Vim version user release notes
vimuiex.zip 0.7.0 2010-09-05 7.0 Marko Mahnič * F1 displays mapped keys for current listbox
* VxOccur can use find/xargs/grep
* Recent searches are stored in memory for later use with VxOccurHist, VxOccurSelectHist
* VxCNext/VxCPrev to move through last search results
* VxOccurRoutines supports D
* Keymaps: <Plug> versions added for most Vx commands
* VxLib installed separately
vimuiex.zip 0.6.6 2010-03-28 7.0 Marko Mahnič * tested and fixed on windows (binaries for Python 2.6 uploaded to SF)
* VxFileFilter: memory consumption reduced 50%
* VxFileFilter: add pending items every 3-5s (gvim only)
* fix in textfilter
vimuiex.zip 0.6.5 2010-03-25 7.0 Marko Mahnič * new command: VxFileFilter
* filesystem scanned in a background thread
* VxOccurRoutines: defaults for latex added
* fix: crash after ou in VxBufferList
vimuiex.zip 0.6.4 2010-02-20 7.0 Marko Mahnič * fix: colour of first listbox line was wrong in curses
* fix: locale was not set properly in curses
vimuiex.zip 0.6.3 2010-01-28 7.0 Marko Mahnič * fix: colors were not defined in curses (I should test more!)
* fix: catch vim.errors in textmenu
* VxOccur: special treatment of displayed filenames: new color; when filtering hide if no items match
vimuiex.zip 0.6.2 2010-01-26 7.0 Marko Mahnič * VxOccur, VxSourceTasks: also search in files; see docs.
* VxDired: open multiple marked files
* VxDisplay: execute register with @
* VxMan: set MANWIDTH
* fix: default color attributes after colorscheme change
* fix: quickfixpreview - map keys locally
vimuiex.zip 0.6.1 2010-01-14 7.0 Marko Mahnič * fix: handle E490 in EditLine
* listbox filter: multiple terms separated with ','; negate term with '-'
vimuiex.zip 0.6 2010-01-07 6.0 Marko Mahnič * items in a list can be marked (map: m)
* VxBufferList: change sort order; open with split, vsplit, tab; delete/wipeout buffer; sort list; split-display marked buffers
* VxRecentFiles: open multiple marked recent files; split/vsplit/tab-open
* VxDired: respect browsedir setting; display/open files from subdirectories
* VxTextMenu: load menus.vim if not loaded
* list contents is displayed using &encoding; (warning: double-width characers may cause wrong display; tested only with UTF)
* vxlib plugin for previewing from QuickFix (map: <space>)
vimuiex.zip 0.5 2009-11-29 7.0 Marko Mahnič * term and screen backends merged; wx deprecated
* added listbox commands: 'i' - numeric item selection
* command "prevpage" also key 'b'; "nextpage" also on 'space'
* directory browser added (vxdired) with recent directory list (d)
* other new plugins: vxjump, vxcapture, vxoccur, vxcmd
* python modules reorganized
* utility functions moved to vxlib:
   - Vim Plugin Generator (python script)
   - history manager for input() command
   - ...
vimuiex.zip 0.4 2009-05-27 7.0 Marko Mahnič * new backend - vim screen (requires vim patch)
* menu shortcuts in term/screen backends
* recent file list plugin
* plugin scripts renamed (py->vx); functions renamed (Py->Vx)
* hilight objects added for popup list
vimpatch.zip 0.4p 2009-05-27 7.0 Marko Mahnič * vim patch for screen backend
ip used for rating:

If you have questions or remarks about this site, visit the vimonline development pages. Please use this site responsibly.
Questions about Vim should go to the maillist. Help Bram help Uganda.