There are a lot of features available in Vim! Just bring up your vim and do a :version; you'll probably see quite a few. How do these features get selected? Well, some options are (de-)selected based on the type of operating system you have, and some are (de-)selected based on whether or not you want a gui (ie. gvim). You may choose which options using the config script:
example: configure --enable-cscope --with-features=huge
The --with-features selector can take several words (tiny, small, normal, big, or huge). This feature selector's effect is shown in the table below. With a bit more effort you could tailor some features in or out by modifying <auto/config.h> by hand, although some features do need others to work right.
+/- Version | Configure Option | T | S | N | B | H | Only on |
ARP | Amiga | ||||||
X11 | --with-x | * | * | * | MAG* | ||
autocmd | * | * | * | ||||
balloon_eval | Athena Motif | ||||||
browse | * | * | * | ||||
builtin_terms | |||||||
byte_offset | * | * | * | ||||
cindent | * | * | * | ||||
cmdline_compl | * | * | * | ||||
cmdline_hist | * | * | * | * | |||
cmdline_info | * | * | * | ||||
comments | * | * | * | ||||
cryptv | * | * | * | ||||
cscope | --enable-cscope | * | * | Unix | |||
dialog_con_gui | * | * | * | ||||
diff | * | * | * | ||||
digraphs | * | * | * | ||||
ebcdic | |||||||
emacs_tags | * | * | |||||
eval | * | * | * | ||||
ex_extra | * | * | * | ||||
extra_search | * | * | * | ||||
farsi | * | * | |||||
file_in_path | * | * | * | ||||
find_in_path | * | * | * | ||||
folding | * | * | * | ||||
footer | Motif | ||||||
fork() | Unix | ||||||
gettext | * | * | * | L* | |||
hangul_input | --enable-hangulinput | ||||||
insert_expand | * | * | * | ||||
jumplist | * | * | * | * | |||
keymap | * | * | |||||
langmap | * | * | |||||
libcall | Win32,Unix,VMS | ||||||
linebreak | * | * | * | ||||
lispindent | * | * | * | ||||
listcmds | * | * | * | * | |||
localmap | * | * | * | ||||
menu | * | * | * | ||||
mksession | * | * | * | ||||
modify_fname | * | * | * | ||||
mouse | * | * | * | ||||
mouse_dec | * | * | |||||
mouse_gpm | --disable-gpm | * | * | * | |||
mouse_jsbterm | Jsbterm mouse | ||||||
mouse_netterm | * | * | |||||
mouse_xterm | * | * | * | Unix | |||
mouseshape | * | * | * | ||||
multi_byte | --enable-multibyte | * | * | ||||
multi_lang | * | * | * | ||||
osfiletype | |||||||
path_extra | * | * | * | ||||
perl | --enable-perlinterp | ||||||
printer | * | ||||||
python | --enable-pythoninterp | ||||||
quickfix | * | * | * | ||||
rightleft | * | * | |||||
ruby | --enable-rubyinterp | ||||||
scrollbind | * | * | * | ||||
signs | * | * | or SunWorkshop | ||||
smartindent | * | * | * | ||||
sniff | --enable-sniff | ||||||
statusline | * | * | * | ||||
sun_workshop | --enable-workshop | ||||||
syntax | * | * | * | ||||
system | Unix&!Gui | ||||||
tag_any_white | |||||||
tag_binary | * | * | * | ||||
tag_old_static | * | * | * | ||||
terminfo | * | * | * | * | * | (if needed) | |
termresponse | * | * | * | ||||
textobjects | * | * | * | ||||
tgetent | * | * | * | * | * | (if needed) | |
title | * | * | * | not MSDOS | |||
toolbar | * | * | * | Gui only | |||
user_commands | * | * | * | ||||
vertsplit | * | * | * | * | |||
viminfo | * | * | * | ||||
virtualedit | * | * | * | ||||
visual | * | * | * | * | |||
visualextra | * | * | * | ||||
wildignore | * | * | * | ||||
wildmenu | * | * | * | ||||
windows | * | * | * | * | |||
writebackup | * | * | * | * | * | not VMS | |
xfontset | --enable-fontset | ||||||
xim | --enable-xim | ||||||
xterm_clipboard | * | * | * | * | * | Unix & Gui | |
xterm_save |
L* | = | needs <locale.h> or X_LOCALE |
MAG* | = | needs Motif, Athena, or GTK |