sponsor Vim development Vim logo Vim Book Ad

WinWalker.vim : Vim 7 windows navigator/manager

 script karma  Rating 71/20, Downloaded by 3122  Comments, bugs, improvements  Vim wiki

created by
Eric Arnold
 
script type
utility
 
description
  Features:                                            *WW_Features* {{{~

   -   Navigate and manage windows and layouts with blinding speed!

   -   Multiple window operations are faster and easier because it creates
       a window navigation and management mode where all window commands
       are familiar single chars,  i.e.  h,H,^H  and j,J,^J  etc.  If you
       weren't using Vim in full-screen mode, you'll start considering it.

   -   More added functionality:

       -   Better [im]movability:

           -   Enhanced push/drag for windows and buffers.

           -   Push/drag/exchange buffers between windows, and windows
               between tabs.  Use adjacent tabs as if they were extensions
               of the current visible screen.
          
           -   Constrained size and placement.  Windows can be 'attached'
               to walls or other windows.

       -   Quick search/jump to any window in any tab by giving the first
           unique char(s).  It jumps to a buffer's window, instead of the
           default action of editing buffers in the current window.

       -   More intuitive for many operations:
          
           -   Incremental resizing is easier, using the [HJKL] and
               [^h^j^k^l].

           -   Resize in the direction specified, unlike  wincmd + - < >

           -   Windows move/push past each other more like you'd expect.
               They can push 'between', instead of just 'maximize at far
               side'.

       -   Other usability stuff:

           -   A window-level jump list for ^I/^O  movement.

           -   O/^O  as a tab-capable alternative to ^Wo .

           -   Various shortcuts to help keep you from breaking your
               stride, i.e. to  :edit,  :ex  mode, sessions, macros, remapping

   -   All the commands are presented as a prompt menu in the command line
       so forgetting stuff isn't a problem.

   -   Many of the commands are the same as the default Vim window  ^W  and
       'wincmd' for easy transition, others are shifted around to be more
       consistent.

   -   Different invocation modes:  |WW_timeoutlen| for menu, key pass-through.
       The goal is to have the menu mode there when you want it, and keep
       quiet otherwise.  Experiment with the different methods to find
       what works best for you.



  Useful Examples:                                            *WW_Useful_Examples* {{{~

    ... Or, 'How is this going to help me?'


    Ergonomics:

        Overall speed dealing with multiple windows.  Try it out:

        -   Start the WinWalker menu, ^W
        -   Open a new tab with  'N'
        -   Open a few windows with  'n' and 'v'
        -   Jump around a little with  '[hljk]'
        -   Put some files in them with 'e'
        -   Push some around with '[HLJK]'
        -   Smack them all down with 'q'

        By now you should have a feel for the difference it makes to have
        single keys to deal with the window system.


    AutoResizing:

        -   Your screen/terminal/GUI size will no longer cramp your style.
            Create windows that are always big enough.

            Example:  You have several windows open, vertical and
            horizontal, which you set to 80 columns, but you only have
            120 or whatever.

            -   Quickly visit each window, set the dimensions with 'c'.
                See |WW_Misc_Menu| => |WW_presets| if you want to change
                the values.
            
            -   For more individualized sizing,  'grow' the window to
                whatever size makes sense, and use the
                |WW_Attach_Constrain_Menu| -> lc 'lock columns' (and/or
                'll') command to cause the window to resize itself to the
                current size each time it is entered.

            Now all those windows will resize themselves each time they are
            entered.

    Templates:

    -   Store a tab to a session with the windows arranged how you
        want.

    -   Create a macro key to retrieve the template like:

        <F2>    srsessname^M

                s               save menu
                 r              restore
                  sessname      name of the session (without Session. or .vim )
                          ^M    literal carriage return, with ^V^M or ^Q^M
                    

    Keeping Track Of Buffers:

        If you're using TabLineSet.vim with the verbose option, you'll be
        able to see all open buffers in the tabline (especially if you have
        the 'Tabline wrapping patch' installed).

        The find, '/', command will show you all loaded buffers, or '?' for
        all buffers.

 
install details
        -   Unzip the distribution file above your plugin to extract:

                plugin/WinWalker.vim
                plugin/Char_menu.vim
                doc/WinWalker.txt


        -   Set up a key map.  I.e.

                nmap <silent> <Leader>w :call WinWalkerMenu()<CR>

                    Default.  I like it mapped to ^W, since I'm used to
                    hitting ^W for windows stuff, and WinWalker is mostly a
                    superset of the standard ^W/wincmd commands.

        -   Look through the |WW_Misc_Menu| and |WW_Customizing| for other
            options to change.

 

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
WinWalker.2.2.zip 2.2 2006-05-28 7.0 Eric Arnold - Revamped window jump list ( ^I and ^O ); better
tracking, cleanup, and display.
- Fixed a few problems with the find command and
menu handler returning early
- Separated startup and menu timeoutlen[s].
- Updated help file.
WinWalker.2.1.zip 2.1 2006-05-16 7.0 Eric Arnold - added 'follow' option,
- 'c' preset now sets the sticky auto-resize,
line/column values,
- windows and buffers auto-resize separately,
- small cmdheight bug,
- smarter hondling of 'previous' window,
- various sizing fixes,
WinWalker.2.0.zip 2.0 2006-04-27 7.0 Eric Arnold - Constrained size and placement.  Windows can be
'attached' to walls or other windows.
- Added key feedkeys() macros
- Sessions remember WinWalker constraints
WinWalker.1.2.1.zip 1.2.1 2006-04-24 7.0 Eric Arnold Restored accidentally deleted function, kill spurious debug msg
WinWalker.1.2.zip 1.2 2006-04-24 7.0 Eric Arnold - handle copen and exchange/push
- fixed searching by bufnr bug
- switch to Unix file format
- added session quick-save
- revamped help and help folding
WinWalker.zip 1.1 2006-04-21 7.0 Eric Arnold -   Added help extraction to standard help
-   Tweaked to handle Taglist.vim
WinWalker.zip 1.0 2006-04-19 7.0 Eric Arnold Initial upload
ip used for rating: 18.221.41.214

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.
   
Vim at Github