Vim Tips Wiki
Advertisement

Introduction

This is a sample .vimrc that attempts to offer an alternative than the vimrc_example.vim delivered with Vim. It has been created in discussion with the ops and regulars of the #vim community.

Reqiuirements and Caveats

The code in this example .vimrc requires a full featured Vim. While it is possible to safeguard many of the options and settings for Vim binaries with less features, this would necessarily lower its readability and ease of understanding.

If your Vim does not support some of the options and features suggested here, you will have to install a Vim package with a larger feature set, or upgrade to a newer version of Vim. For Windows, the default Vim package already contains all necessary features, as does the Vim packages at [cream.sf.net cream.sf.net]. For Linux distributions, refer to the documentation for the Vim package and the package manager. For other operating systems, refer to the documentation on how to build Vim from source code.

Recommendations on Usage

This is a minimal, but feature rich, .vimrc that aims to satisfy the majority of new and intermediate Vim users. While you may use this example as your .vimrc out-of-the-box, it is important to understand what the options and features do. It contains features and options that almost all Vim users should have at least basic knowledge about.

The File

" URL: http://vim.wikia.com/wiki/Example_vimrc
" Authors: http://vim.wikia.com/wiki/Vim_on_Freenode
" Description: A minimal, but feature rich, example .vimrc. If you are a
"              newbie, basing your first .vimrc on this file is a good choice.
"              If you're a more advanced user, building your own .vimrc based 
"              on this file is still a good idea. 

"------------------------------------------------------------
" Features {{{1
"
" These options and commands enables some very useful features in Vim, that
" no user should have to live without.

" Set 'nocompatible' to ward off unexpected things that your distro might
" have made, as well as sanely reset options when re-sourcing .vimrc
set nocompatible 

" Attempt to determine the type of a file based on its name and possibly its
" contents.  Use this to allow intelligent auto-indenting for each filetype,
" and for plugins that are filetype specific.
filetype indent plugin on

" Enable syntax highlighting
syntax on


"------------------------------------------------------------
" Must have options {{{1
"
" These are options that any sane Vim setup should have

" One of the most important options to activate. Allows you to switch from an
" unsaved buffer without saving it first. Also allows you to keep an undo
" history for multiple files.  Vim will complain if you try to quit without
" saving.
set hidden

" When opening a new line and no filetype-specific indenting is enabled, keep
" the same indent as the line you're currently on. Useful for READMEs, etc.
set autoindent

" Stop certain movements from always going to the first character of a line. 
" While this behaviour deviates from that of Vi, it does what most users 
" coming from other editors would expect.
set nostartofline

" Better command-line completion
set wildmenu

" Show partial commands in the last line of the screen
set showcmd

" Highlight searches (use <C-L> to temporarily turn off highlighting; see the
" mapping of <C-L> below)
set hlsearch

" Modelines have historically been a source of security vulnerabilities.  As 
" such, it may be a good idea to disable them and use the securemodelines 
" script, <http://www.vim.org/scripts/script.php?script_id=1876>. 
" set nomodeline  


"------------------------------------------------------------
" Usability options {{{1
"
" These are options that users frequently set in their .vimrc. Some of them
" changes Vim's behaviour in ways which deviate from the true Vi way, but
" which are considered to add usability. Which, if any, of these options to
" use is very much a personal preference, but they are harmless.

" Use case insensitive search, except when using capital letters
set ignorecase
set smartcase

" Allow backspacing over autoindent, line breaks and start of insert action
set backspace=indent,eol,start

" Display the cursor position on the last line of the screen or in the status
" line of a window
set ruler

" Always display the status line, even if only one window is displayed
set laststatus=2

" Instead of failing a command because of unsaved changes, instead raise a
" dialogue asking if you wish to save changed files.
set confirm

" Use visual bell instead of beeping when doing something wrong
set visualbell

" And reset the terminal code for the visual bell.  If visualbell is set, and
" this line is also included, vim will neither flash nor beep.  If visualbell
" is unset, this does nothing.
set t_vb=

" Enable use of the mouse for all modes
set mouse=a

" Set the command window height to 2 lines, to avoid many cases of having to
" "press <Enter> to continue"
set cmdheight=2

" Display line numbers on the left
set number

" Quickly time out on keycodes, but never time out on mappings
set notimeout ttimeout ttimeoutlen=200

" Use <F11> to toggle between 'paste' and 'nopaste'
set pastetoggle=<F11>


"------------------------------------------------------------
" Indentation options {{{1
"
" Indentation settings according to personal preference.

" Indentation settings for using 2 spaces instead of tabs.
" Do not change 'tabstop' from its default value of 8 with this setup.
set shiftwidth=2
set softtabstop=2
set expandtab

" Indentation settings for using hard tabs for indent. Display tabs as 
" two characters wide.
"set shiftwidth=2
"set tabstop=2


"------------------------------------------------------------
" Mappings {{{1
"
" Useful mappings 

" Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy,
" which is the default
map Y y$

" Map <C-L> (redraw screen) to also turn off search highlighting until the
" next search
nnoremap <C-L> :nohl<CR><C-L>


"------------------------------------------------------------

Comments

Advertisement