• Stars
    star
    258
  • Rank 158,189 (Top 4 %)
  • Language
    Vim Script
  • Created about 14 years ago
  • Updated about 3 years ago

Reviews

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

Repository Details

buffer/file/command/tag/etc explorer with fuzzy matching
This is a mirror of http://www.vim.org/scripts/script.php?script_id=1984

Repository:
  https://bitbucket.org/ns9tks/vim-fuzzyfinder/

Issues:
  http://bitbucket.org/ns9tks/vim-fuzzyfinder/issues/

Download latest(development) version
  https://bitbucket.org/ns9tks/vim-fuzzyfinder/get/tip.zip

Sceenshot:
  Buffer mode:
    http://cdn.bitbucket.org/ns9tks/vim-fuzzyfinder/downloads/fuzzyfinder-buffer.png
  File mode (searching from all files in vim runtime directories using abbreviation/multiple-search)
    http://cdn.bitbucket.org/ns9tks/vim-fuzzyfinder/downloads/fuzzyfinder-file-abbrev.png


==============================================================================
INTRODUCTION                                                *fuf-introduction*

FuzzyFinder provides convenient ways to quickly reach the
buffer/file/command/bookmark/tag you want. FuzzyFinder searches with the
fuzzy/partial pattern to which it converted an entered pattern.

        Entered pattern  Fuzzy pattern   Partial pattern ~
>
        abc              *a*b*c*         *abc*
        dir/file         dir/*f*i*l*e*   dir/*file*
        d*r/file         d*r/*f*i*l*e*   d*r/*file*
        ../**/s          ../**/*s*       ../**/*s*
                         (** allows searching a directory tree.)
<
You will be happy when:

        "./AhLongLongLongLongLongFile.txt"
        "./AhLongLongLongLongLongName.txt"
        "./OhLongLongLongLongLongFile.txt"
        "./OhLongLongLongLongLongName.txt" <- you want :O

Type "ON" and "OhLongLongLongLongLongName.txt" will be selected. :D

FuzzyFinder can search:

        - buffers
        - files
        - directories
        - most recently used files
        - files around most recently used files
        - most recently used command-lines
        - bookmarked files
        - bookmarked directories
        - tags
        - files which are included in current tagfiles
        - jump list
        - change list
        - buffer lines
        - quickfix
        - help

FuzzyFinder also provides APIs to use its system of searching files or
selecting items.

FuzzyFinder supports multibyte characters.


==============================================================================
INSTALLATION                                                *fuf-installation*

Put all files into your runtime directory. If you have the zip file, extract
it to your runtime directory.

You should place the files as follows:
>
        <your runtime directory>/plugin/fuf.vim
        <your runtime directory>/doc/fuf.txt
        ...
<
If you are disgusted to make your runtime directory confused with a lot of
plugins, put each of the plugins into a directory individually and just add
the directory path to 'runtimepath'. It's easy to uninstall plugins.

Then update your help tags files to enable help for this plugin. See
|add-local-help| for details.

Requirements: ~

- L9 library (vimscript #3252)


==============================================================================
USAGE                                                              *fuf-usage*

You can launch FuzzyFinder by the following commands:

         Command           Mode ~
        |:FufBuffer|       - Buffer mode (|fuf-buffer-mode|)
        |:FufFile|         - File mode (|fuf-file-mode|)
        |:FufCoverageFile| - Coverage-File mode (|fuf-coveragefile-mode|)
        |:FufDir|          - Directory mode (|fuf-dir-mode|)
        |:FufMruFile|      - MRU-File mode (|fuf-mrufile-mode|)
        |:FufMruCmd|       - MRU-Command mode (|fuf-mrucmd-mode|)
        |:FufBookmarkFile| - Bookmark-File mode (|fuf-bookmarkfile-mode|)
        |:FufBookmarkDir|  - Bookmark-Dir mode (|fuf-bookmarkdir-mode|)
        |:FufTag|          - Tag mode (|fuf-tag-mode|)
        |:FufBufferTag|    - Buffer-Tag mode (|fuf-buffertag-mode|)
        |:FufTaggedFile|   - Tagged-File mode (|fuf-taggedfile-mode|)
        |:FufJumpList|     - Jump-List mode (|fuf-jumplist-mode|)
        |:FufChangeList|   - Change-List mode (|fuf-changelist-mode|)
        |:FufQuickfix|     - Quickfix mode (|fuf-quickfix-mode|)
        |:FufLine|         - Line mode (|fuf-line-mode|)
        |:FufHelp|         - Help mode (|fuf-help-mode|)

It is recommended to map these commands.

These commands open 1-line buffer to enter search pattern and start insert
mode.

FuzzyFinder searchs for matching items with an entered pattern and shows them
in a completion menu. For more details on pattern matching, see
|fuf-search-patterns|.

If there are a lot of matching items, FuzzyFinder limits the number of
enumerating items (|g:fuf_enumeratingLimit|) to speed up a response time, and
highlights the pattern with "Error" group.

The first item in the completion menu will be selected automatically.

Typing <C-w> deletes one block of an entered pattern before the cursor, like a
directory name.

with <C-s> (|g:fuf_keyPrevPattern|) and <C-^> (|g:fuf_keyNextPattern|), You
can recall patterns which have been entered before from history.

You can open a selected item in various ways:

        <CR>  (|g:fuf_keyOpen|)        - opens in a previous window.
        <C-j> (|g:fuf_keyOpenSplit|)   - opens in a split window.
        <C-k> (|g:fuf_keyOpenVsplit|)  - opens in a vertical-split window.
        <C-l> (|g:fuf_keyOpenTabpage|) - opens in a new tab page.

To cancel and return to previous window, just leave Insert mode.

With <C-\><C-\> (|g:fuf_keySwitchMatching|), You can switch search method
between fuzzy matching and partial matching.

With <C-t> (|g:fuf_keyNextMode|) and <C-y> (|g:fuf_keyPrevMode|), You can
switch current mode without leaving Insert mode .

You can preview selected item with <C-@> (|g:fuf_keyPreview|) in some modes.
Repeating the key on the same item shows another information. The height
of command-line area is changed to |g:fuf_previewHeight| when you launch a
mode supporting preview. This feature is available when |g:fuf_previewHeight|
is not 0.


==============================================================================
MODES                                                              *fuf-modes*

                                                             *fuf-buffer-mode*
Buffer mode ~

This mode provides an interface to select a buffer from a list of existing
buffers and open it.

Press <C-]> (|g:fuf_buffer_keyDelete|) in this mode and selected buffer will
be deleted.

                                                               *fuf-file-mode*
File mode ~

This mode provides an interface to search a file tree for a file and open it.

                                                       *fuf-coveragefile-mode*
Coverage-File mode ~

This mode provides an interface to select a file from all files of a preset
coverage and open it.

By default, This mode lists all files under the current working directory
recursively. (|g:fuf_coveragefile_globPatterns|)

If you want to search other coverage, execute |FufCoverageFileRegister|
command to register new search coverage and |FufCoverageFileChange| command to
choose a search coverage and launch Coverage-File mode.

In addition, there is another way to change a search coverage with
|fuf#setOneTimeVariables()| function.

Example: search only .h and .c files:
>
        call fuf#setOneTimeVariables(['g:fuf_coveragefile_globPatterns', ['**/*.h', '**/*.c']])
              \ | FufCoverageFile
<
Example: search your home directory in addition to the default coverage:
>
        call fuf#setOneTimeVariables(['g:fuf_coveragefile_globPatterns', g:fuf_coveragefile_globPatterns + ['~/**/.*', '~/**/*']])
              \ | FufCoverageFile
<

                                                                *fuf-dir-mode*
Directory mode ~

This mode provides an interface to search a file tree for a directory and
change the current directory.

                                                            *fuf-mrufile-mode*
MRU-File mode ~

This mode provides an interface to select a file from the most recently used
files and open it.

Press <C-]> (|g:fuf_mrufile_keyExpand|) in this mode and files around the most
recently used files are listed. Each time the key is pressed, the search range
are expanded one level along the directory tree upwardly/downwardly.

This mode is set to disable by default (|g:fuf_modesDisable|) because
processes for this mode in |BufEnter| and |BufWritePost| could cause
Performance issue.

See also: |FufMruFileInCwd|

                                                             *fuf-mrucmd-mode*
MRU-Command mode ~

This mode provides an interface to select a command from the most recently
used commands and execute it.

This mode is set to disable by default (|g:fuf_modesDisable|) because mapping
<CR> of Command-line mode required by this mode has side effects.

                                                       *fuf-bookmarkfile-mode*
Bookmark-File mode ~

This mode provides an interface to select one of the bookmarks you have added
beforehand and jump there.

You can add a cursor line to bookmarks by |:FufBookmarkFileAdd| command.
Execute that command and you will be prompted to enter a bookmark name.

FuzzyFinder adjusts a line number for jump. If a line of bookmarked position
does not match to a pattern when the bookmark was added, FuzzyFinder searches
a matching line around bookmarked position. So you can jump to a bookmarked
line even if the line is out of bookmarked position. If you want to jump to
bookmarked line number without the adjustment, set
|g:fuf_bookmarkfile_searchRange| option to 0.

Press <C-]> (|g:fuf_bookmarkfile_keyDelete|) in this mode and selected
bookmark will be deleted.

                                                        *fuf-bookmarkdir-mode*
Bookmark-Dir mode ~

This mode provides an interface to select one of the bookmarks you have added
beforehand and change the current directory.

You can add a directory to bookmarks by |:FufBookmarkDirAdd| command. Execute
that command and you will be prompted to enter a directory path and  a
bookmark name.

Press <C-]> (|g:fuf_bookmarkdir_keyDelete|) in this mode and selected bookmark
will be deleted.

                                                                *fuf-tag-mode*
Tag mode ~

This mode provides an interface to select a tag and jump to the definition of
it.

Following mapping is a replacement for <C-]>:
>
        noremap <silent> <C-]> :FufTagWithCursorWord!<CR>
<

                                                          *fuf-buffertag-mode*
Buffer-Tag mode ~

This mode provides an interface to select a tag of current buffer or all
buffers and jump to the definition of it.

Tag list is instantly created when FuzzyFinder is launched, so there is no
need to make tags file in advance.

|FufBufferTag| covers current buffer and |FufBufferTagAll| covers all buffers.

Following mapping is a replacement for <C-]>:
>
        nnoremap <silent> <C-]> :FufBufferTagWithCursorWord!<CR>
        vnoremap <silent> <C-]> :FufBufferTagAllWithSelectedText!<CR>
<
or
>
        nnoremap <silent> <C-]> :FufBufferTagAllWithCursorWord!<CR>
        vnoremap <silent> <C-]> :FufBufferTagAllWithSelectedText!<CR>
<
This mode is inspired by taglist.vim (vimscript #273) and refered its codes.

                                                         *fuf-taggedfile-mode*
Tagged-File mode ~

This mode provides an interface to select one of the files which are included
in current tagfiles and open it.

                                                           *fuf-jumplist-mode*
Jump-List mode ~

This mode provides an interface to select one from the |jumplist| of the
current window and jump there.

                                                         *fuf-changelist-mode*
Change-List mode ~

This mode provides an interface to select one from the |changelist| of the
current buffer and jump there.

                                                           *fuf-quickfix-mode*
Quickfix mode ~

This mode provides an interface to select one from the |quickfix| list and
jump there.

                                                               *fuf-line-mode*
Line mode ~

This mode provides an interface to select a line from current buffer and jump
there.

                                                               *fuf-help-mode*
Help mode ~

This mode provides an interface to select a help tag and jump to the help
page.

                                                          *fuf-givenfile-mode*
Given-File mode ~

This mode provides an API to open a selected file from a given list.

API function:
>
        function fuf#givenfile#launch(
              \ initialPattern, partialMatching, prompt, items)
<
        initialPattern  - String which is inserted after launching
                          FuzzyFinder.
        partialMatching - If non-zero, enable partial matching instead of
                          fuzzy matching.
        prompt          - Prompt string
        items           - List of items.

Example of use:
>
        " Open one of your dotfiles.
        call fuf#givenfile#launch('', 0, '>', split(glob('~/.*'), "\n"))
<

                                                           *fuf-givendir-mode*
Given-Directory mode ~

This mode provides an API to change current working directory to a selected
one from a given list.

API function:
>
        function fuf#givendir#launch(
              \ initialPattern, partialMatching, prompt, items)
<
        initialPattern  - String which is inserted after launching
                          FuzzyFinder.
        partialMatching - If non-zero, enable partial matching instead of
                          fuzzy matching.
        prompt          - Prompt string
        items           - List of items.


Example of use:
>
        " Change current working directory to one of your runtime directory.
        call fuf#givendir#launch('', 0, '>', split(&runtimepath, ','))
<

                                                           *fuf-givencmd-mode*
Given-Command mode ~

This mode provides an API to execute a selected command from a given list.

A selected command is executed by |feedkeys()|, so it is able to emulate a
series of key input in Normal mode.

API function:
>
        function fuf#givencmd#launch(
              \ initialPattern, partialMatching, prompt, items)
<
        initialPattern  - String which is inserted after launching
                          FuzzyFinder.
        partialMatching - If non-zero, enable partial matching instead of
                          fuzzy matching.
        prompt          - Prompt string
        items           - List of items.


Example of use:
>
        function GetAllCommands()
          redir => commands
          silent command
          redir END
          return map((split(commands, "\n")[3:]),
              \      '":" . matchstr(v:val, ''^....\zs\S*'')')
        endfunction

        " execute one of the user-defined commands 
        call fuf#givencmd#launch('', 0, '>', GetAllCommands())

<

                                                       *fuf-callbackfile-mode*
Callback-File mode ~

This mode provides an API to find and get a file path which is selected by an
user.

API function:
>
        function fuf#callbackfile#launch(
              \ initialPattern, partialMatching, prompt, exclude, listener)
<
        initialPattern  - String which is inserted after launching
                          FuzzyFinder.
        partialMatching - If non-zero, enable partial matching instead of
                          fuzzy matching.
        prompt          - Prompt string.
        exclude         - Regexp pattern for items which you want to exclude
                          from completion list.
        listener        - |Dictionary| which has 'onComplete' and 'onAbort'.
                          They are called at the end of FuzzyFinder.
                          listener.onComplete(item, method) is called with 2
                          arguments which are a name of selected item and a
                          number of open method when completed.
                          listener.onAbort() is called when aborted.

Example of use:
>
        let listener = {}

        function listener.onComplete(item, method)
          echo "Item: " . a:item . "\nMethod: " . a:method
        endfunction

        function listener.onAbort()
          echo "Abort"
        endfunction

        " Find a file from current working directory.
        call fuf#callbackfile#launch('', 0, '>', '', listener)

        " Find a file from home directory.
        call fuf#callbackfile#launch('~/', 0, '>', '', listener)
<

                                                       *fuf-callbackitem-mode*
Callback-Item mode ~

This mode provides an API to get an item which is selected from a given list
by an user.

API function:
>
        function fuf#callbackitem#launch(
              \ initialPattern, partialMatching, prompt, listener, items, forPath)
<
        initialPattern  - String which is inserted after launching
                          FuzzyFinder.
        partialMatching - If non-zero, enable partial matching instead of
                          fuzzy matching.
        prompt          - Prompt string
        listener        - |Dictionary| which has 'onComplete' and 'onAbort'.
                          They are called at the end of FuzzyFinder.
                          listener.onComplete(item, method) is called with 2
                          arguments which are a name of selected item and a
                          number of open method when completed.
                          listener.onAbort() is called when aborted.
        items           - List of items.
        forPath         - If non-zero, use a matching method for files.

Example of use:
>
        let listener = {}

        function listener.onComplete(item, method)
          echo "Item: " . a:item . "\nMethod: " . a:method
        endfunction

        function listener.onAbort()
          echo "Abort"
        endfunction

        " Select an item from a given list.
        call fuf#callbackitem#launch('', 0, '>', listener, ['ed', 'vi', 'vim'], 0)

        " Select a file from a given list.
        call fuf#callbackitem#launch('', 0, '>', listener, ['../foo/bar', 'baz'], 1)
<

==============================================================================
DETAILED TOPICS                                          *fuf-detailed-topics*

                     *fuf-setting-one-time-option* *fuf#setOneTimeVariables()*
Setting One-Time Options ~

If you want to set one-time options only for the next FuzzyFinder,
|fuf#setOneTimeVariables()| function will be of help. This function is used as
follows:
>
        call fuf#setOneTimeVariables(['g:fuf_ignoreCase', 0], ['&lines', 50])
<
This function takes 0 or more arguments and each of them is a pair of a
variable name and its value. Specified options will be set practically next
time FuzzyFinder is launched, and restored when FuzzyFinder is closed.

                                                         *fuf-search-patterns*
Search Patterns ~

You can enter one primary pattern and zero or more refining patterns as search
patterns. An entered pattern is separated by ";" (|g:fuf_patternSeparator|),
and the first pattern is a primary pattern and the rest of patterns is a
refining pattern.
>
                   primary    refining  refining
                 |----------| |-------| |----|
        >MruFile>bookmark.vim;autoload/;/home/
<
A refining pattern is used to narrow down the list of matching items by
another pattern.

With a primary pattern, FuzzyFinder does fuzzy matching or partial matching,
which you specified. With a refining pattern, FuzzyFinder does partial
matching by default. (|g:fuf_fuzzyRefining|)

When you enter a number as refining pattern, it also can match the index of
each item.

In a mode which targets a static set of file paths (such as Buffer or MRU-File
mode, not File or Directory) and |g:fuf_splitPathMatching| is non-zero,
matching with a primary pattern is divided into head part and tail part and
done individually.
>
          head   tail
        |------||-----|
        foo/bar/baz.vim

        fuzzy matching example:
        +----------------+---------+---------+---------+
        | item \ pattern | foo/bar | foo/    | bar     |
        +----------------+---------+---------+---------+
        | foo/bar        |   match |   match |   match |
        | foo/abc        | unmatch |   match | unmatch |
        | abc/bar        | unmatch | unmatch |   match |
        | foobar         | unmatch | unmatch |   match |
        | foooo/barrrr   |   match |   match |   match |
        | foooo/fooooo   | unmatch |   match | unmatch |
        +----------------+---------+---------+---------+
<
refining pattern can match anywhere on each path in the above case.

                                             *fuf-sorting-of-completion-items*
Sorting Of Completion Items ~

FuzzyFinder sorts completion items with some rules.

An item, one part of which is matched with a whole pattern, is placed upper.
E.g., with the pattern "bc", the item "abc" is placed upper than "bac".

In the above case, items, each having matching part at the head of itself, are
placed upper than others. E.g., with the pattern "foo", the item "foobar" is
placed upper than "foobarbaz".

And the shorter the length of the item after matching position puts it higher.
E.g., with the pattern "bar", the item "foobar" is placed upper than
"foobarbaz".

If a pattern matches an item at only word boundaries of it, the item is placed
upper. E.g., with a pattern "fb", items such as "fooBarBaz" and "foo_bar_baz"
is placed upper.

Plus, FuzzyFinder has a learning system. An item which has been completed in
the past with current pattern is placed upper.

                                                          *fuf-reusing-window*
Reusing Of A Window Containing Target Buffer/File ~

If a window containing target buffer is found in current tab page when
FuzzyFinder is going to open the buffer in a split new window, move to it. If
a window containing target buffer is found in other tab page when FuzzyFinder
is going to open the buffer in a new tab page, move to it.

You can disable that feature via 'reuse_window' options if always want to open
a buffer in a new window.

                                                             *fuf-hiding-menu*
To Hide The Completion Menu Temporarily In FuzzyFinder ~

You can close it by <C-e> and reopen it by <C-x><C-o>.

                                      *fuf-abbreviation* *fuf-multiple-search*
Abbreviations And Multiple Search ~

You can use abbreviations and multiple search in all modes by setting
|g:fuf_abbrevMap| option.

For example, set as below:
>
        let g:fuf_abbrevMap = {
              \   "^doc:" : [
              \     "~/project/**/doc/",
              \     ".vim/doc/",
              \   ],
              \ }
<
and enter "doc:txt" in File mode, then FuzzyFinder searches by the following
patterns:

        "~/project/**/doc/*t*x*t*"
        ".vim/doc/*t*x*t*"

and show concatenated search results.

                                                               *fuf-data-file*
Data File ~

FuzzyFinder writes completion statistics, MRU data, bookmark, etc to files
under |g:fuf_dataDir|.

|:FufEditDataFile| command is helpful in editing your data files. This command
reads the data file in new unnamed buffer. Write the buffer and the data file
will be updated.

                                                                   *fuf-cache*
Cache ~

Once a cache was created, It is not automatically updated to speed up the
response time by default. To update it, use |:FufRenewCache| command.

                                                            *fuf-dot-sequence*
Going Up Parent Directories With Dot Sequence ~

You can go up parent directories with entering dot sequence. Dot sequence
after a path separator is expanded to "../" sequence.

        Dot sequence    Expanded pattern ~
        /..             /../
        /...            /../../
        /....           /../../../

                                                         *fuf-how-to-add-mode*
How To Add Mode ~

To add "mymode" mode, put the source file at autoload/fuf/mymode.vim and call
fuf#addMode("mymode") .

                                                                  *fuf-migemo*
What Is Migemo ~

Migemo is a search method for Japanese language.


==============================================================================

More Repositories

1

taglist.vim

Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
Vim Script
650
star
2

dbext.vim

Provides database access to many dbms (Oracle, Sybase, Microsoft, MySQL, DBI,..)
Vim Script
417
star
3

YankRing.vim

Maintains a history of previous yanks, changes and deletes
Vim Script
405
star
4

a.vim

Alternate Files quickly (.c --> .h etc)
Vim Script
302
star
5

DrawIt

Ascii drawing plugin: lines, ellipses, arrows, fills, and more!
Vim Script
293
star
6

ReplaceWithRegister

Replace text with the contents of a register.
Vim Script
291
star
7

Conque-GDB

GDB command line interface and terminal emulator in (G)Vim.
Python
275
star
8

AutoComplPop

Automatically opens popup menu for completions
Vim Script
263
star
9

Conque-Shell

Run interactive commands inside a Vim buffer
Vim Script
248
star
10

vim-auto-save

Automatically save changes to disk
Vim Script
225
star
11

vimwiki

Personal Wiki for Vim
Vim Script
195
star
12

ZoomWin

Zoom in/out of windows (toggle between one window and multi-window)
Vim Script
182
star
13

VimClojure

A filetype, syntax and indent plugin for Clojure
Vim Script
179
star
14

paredit.vim

Paredit Mode: Structured Editing of Lisp S-expressions
Vim Script
177
star
15

DoxygenToolkit.vim

Simplify Doxygen documentation in C, C++, Python.
Vim Script
162
star
16

c.vim

C/C++ IDE -- Write and run programs. Insert statements, idioms, comments etc.
Vim Script
152
star
17

mru.vim

Plugin to manage Most Recently Used (MRU) files
Vim Script
149
star
18

matchit.zip

extended % matching for HTML, LaTeX, and many other languages
Vim Script
148
star
19

argtextobj.vim

Text-object like motion for arguments
Vim Script
138
star
20

Align

Help folks to align text, eqns, declarations, tables, etc
Vim Script
132
star
21

UltiSnips

The ultimate snippet solution for python enabled Vim.
Python
129
star
22

Vim-R-plugin

Plugin to work with R
Vim Script
126
star
23

slimv.vim

SLIME-like Lisp and Clojure REPL inside Vim with Profiling, Hyperspec, Paredit
Common Lisp
119
star
24

bufexplorer.zip

Buffer Explorer / Browser
Vim Script
111
star
25

TaskList.vim

Eclipse like task list
Vim Script
107
star
26

VimIM

Vim Input Method -- Vim 中文输入法
Vim Script
103
star
27

VOoM

Vim Outliner of Markers -- two-pane outliner and related utilities
Python
98
star
28

SQLUtilities

SQL utilities - Formatting, generate - columns lists, procedures for databases
Vim Script
91
star
29

bash-support.vim

BASH IDE -- Write and run BASH-scripts using menus and hotkeys.
Vim Script
90
star
30

netrw.vim

Network oriented reading, writing, and browsing (keywords: netrw ftp scp)
Vim Script
90
star
31

OmniCppComplete

C/C++ omni-completion with ctags database
Vim Script
89
star
32

LanguageTool

Grammar checker for English, French, German (etc.) in Vim
Vim Script
88
star
33

Pydiction

Tab-complete your Python code
Python
87
star
34

TwitVim

Twitter client for Vim
Vim Script
86
star
35

xoria256.vim

Finely tuned soft gamma, 256 colors, dark background, gvim == vim
Vim Script
84
star
36

indentpython.vim

An alternative indentation script for python
Vim Script
82
star
37

utl.vim

Univeral Text Linking - Execute URLs, footnotes, open emails, organize ideas
Vim Script
80
star
38

fcitx.vim

keep and restore fcitx state when leaving/re-entering insert mode
Vim Script
79
star
39

peaksea

Refined color, contains both gui and cterm256 for dark and light background
Vim Script
77
star
40

SyntaxRange

Define a different filetype syntax on regions of a buffer.
Vim Script
76
star
41

L9

Vim-script library
Vim Script
75
star
42

AnsiEsc.vim

ansi escape sequences concealed, but highlighted as specified (conceal)
Vim Script
72
star
43

LargeFile

Edit large files quickly (keywords: large huge speed)
Vim Script
72
star
44

JavaScript-Indent

Javascript indenter (HTML indent is included)
Vim Script
69
star
45

tComment

An extensible & universal comment plugin that also handles embedded filetypes
Vim Script
68
star
46

The-NERD-tree

A tree explorer plugin for navigating the filesystem
Vim Script
66
star
47

nginx.vim

initial version
Vim Script
65
star
48

camelcasemotion

Motion through CamelCaseWords and underscore_notation.
Vim Script
64
star
49

ShowMarks

Visually shows the location of marks.
Vim Script
64
star
50

closetag.vim

Functions and mappings to close open HTML/XML tags
Vim Script
64
star
51

BufOnly.vim

Delete all the buffers except the current/named buffer
Vim Script
63
star
52

bufkill.vim

Unload/delete/wipe a buffer, keep its window(s), display last accessed buffer(s)
Vim Script
62
star
53

vcscommand.vim

CVS/SVN/SVK/git/hg/bzr integration plugin
Vim Script
61
star
54

Auto-Pairs

Insert or delete brackets, parens, quotes in pair.
Vim Script
61
star
55

AutoClose

Inserts matching bracket, paren, brace or quote
Vim Script
61
star
56

Gundo

Visualize your undo tree.
Python
60
star
57

grep.vim

Grep search tools integration with Vim
Vim Script
56
star
58

javacomplete

Omni Completion for JAVA
Vim Script
56
star
59

SearchComplete

Tab completion of words inside of a search ('/')
Vim Script
55
star
60

VisIncr

Produce increasing/decreasing columns of numbers, dates, or daynames
Vim Script
55
star
61

EasyGrep

Fast and Easy Find and Replace Across Multiple Files
Vim Script
53
star
62

pep8

Check your python source files with PEP8
Vim Script
52
star
63

wombat256.vim

Wombat for 256 color xterms
Vim Script
48
star
64

sessionman.vim

Vim session manager
Vim Script
47
star
65

cscope.vim

create cscope database and connect to existing proper database automatically.
Vim Script
47
star
66

restore_view.vim

A plugin for automatically restoring file's cursor position and folding
Vim Script
46
star
67

Mark--Karkat

Highlight several words in different colors simultaneously. (#1238 continued)
Vim Script
46
star
68

loremipsum

A dummy text generator
Vim Script
45
star
69

ScrollColors

Colorsheme Scroller, Chooser, and Browser
Vim Script
45
star
70

gtags.vim

Integrates GNU GLOBAL source code tag system with VIM.
Vim Script
42
star
71

perl-support.vim

Perl IDE -- Write and run Perl-scripts using menus and hotkeys.
Vim Script
42
star
72

google.vim

Indent file for Google C++ Coding Style
Vim Script
41
star
73

winmanager

A windows style IDE for Vim 6.0
Vim Script
41
star
74

gitignore

Set 'wildignore' from ./.gitignore
Vim Script
40
star
75

sudo.vim

Allows one to edit a file with prevledges from an unprivledged session.
Vim Script
40
star
76

HTML-AutoCloseTag

Automatically closes HTML tags once you finish typing them.
Vim Script
39
star
77

greplace.vim

Replace a pattern across multiple files interactively
Vim Script
38
star
78

CSApprox

Make gvim-only colorschemes work transparently in terminal vim
Vim Script
38
star
79

phpfolding.vim

Automatic folding of PHP functions, classes,.. (also folds related PhpDoc)
Vim Script
38
star
80

SyntaxComplete

OMNI Completion based on the current syntax highlights
Vim Script
37
star
81

vis

Extended Visual Mode Commands, Substitutes, and Searches
Vim Script
36
star
82

snipMate

TextMate-style snippets for Vim
Vim Script
36
star
83

workflowish

ToDo manager plugin inspired by workflowy.com
Vim Script
34
star
84

VimRepress

Plugin for managing wordpress blog from Vim.
Vim Script
34
star
85

Lucius

Dark and light color scheme (GUI and 256 color terminal)
Vim Script
34
star
86

SQLComplete.vim

SQLComplete is a SQL code completion system using the omnifunc framework
Vim Script
34
star
87

Wombat

Dark gray color scheme sharing some similarities with Desert
Vim Script
33
star
88

DirDiff.vim

A plugin to diff and merge two directories recursively.
Vim Script
33
star
89

AutoTag

Updates entries in a tags file automatically when saving
Vim Script
33
star
90

TagHighlight

Extra highlighting of typedefs, enumerations etc (based on ctags)
Vim Script
32
star
91

Gist.vim

vimscript for gist
Vim Script
32
star
92

jsbeautify

a javascript source code formatter
Vim Script
32
star
93

The-NERD-Commenter

A plugin that allows for easy commenting of code for many filetypes.
Vim Script
32
star
94

marvim

Macro Persistent Storage and Shareable Repository for VIM
Vim Script
32
star
95

Python-mode-klen

python mode
Python
31
star
96

scratch.vim

Plugin to create and use a scratch Vim buffer
Vim Script
31
star
97

Emmet.vim

vim plugins for HTML and CSS hi-speed coding.
Vim Script
29
star
98

IndexedSearch

shows 'Nth match out of M' at every search (index of match+total # matches)
Vim Script
29
star
99

errormarker.vim

Highlights and sets error markers for lines with compile errors
Vim Script
29
star
100

TeTrIs.vim

A tetris game in pure vim
Vim Script
29
star