See also ViNotes
vim(1) -- potentially the most powerful editor unix users have access to, and one of the best things about it is in actual fact it's not restricted to unix users at all. Anybody can use vim, anywhere (more or less). Its only real drawback is that it's a little difficult to get to grips with at first. This page is not designed to cover basic editing. Rather, this page is a list of tips which will make your vim editing experience more enjoyable, particularly if vim is used as a programming editor.
BenStaz finds these settings very useful when using vim for coding (any language).
set tabstop=8 " 4 places per tab character set shiftwidth=8 " indent/outdent by 4 places set expandtab " convert hardtabs to the equivalent number of blanks set softtabstop=8 " same value as 'tabstop' == no soft tabstops set autoindent " indent of new lines as appropriate
vim, of course, supports syntax highlighting. Often this isn't on by default. The easiest way to turn this on is to type :syntax on. Voila. What's that? You're using a dark background and the highlighting looks terrible? No real problem. Try :set background=dark. If you just think it looks horrible, full stop, get a new colourscheme... they’re available from vim.org and go into your ~/.vim/colors directory (which you may have to create). Select a different colour scheme using the :colorscheme command (see :help colorscheme; note that TabCompletion after the command works as you’d expect).
If you run vim in the terminal your colour schemes are by default limited to 16 colours. Some terminals such as xterm can be compiled with 256 color support. To enable vim to use these add the following lines to your .vimrc:
" Enable 256 colors set t_Co=256 set t_AB=^[[48;5;%dm set t_AF=^[[38;5;%dm
Note that the ^[ should be a literal escape character.
Most vim colourschemes will need to be customised a little to look decent in this mode although some (such as xterm16) are designed for it.
You can automatically enable syntax highlighting when starting a new vim text. vim is smart and can automatically adjust the highlighting by looking at the extension of the file. For example, vim test.py will automatically have python syntax highlighting.
If you are already in a document and wish to enable syntax highlighting, then use this command.
eg: for python highlighting:
or bash Highlighting:
What syntax highlighting language is currently being used?
--KurtGaastra?
To build from within vim, simply use ":make". It's probably a good idea to set your current working directory to the same place as your makefile is located, which you can do with ":chdir <directory>". Vim will build your project, and hopefully jump intelligently to the right place whenever you encounter errors. If you need to set environment variables for your build, it's probably a good idea to set them on your :make line, eg ":make x=n"
Vim will support multiple buffers. You can switch between them using the menu in gvim, or if you prefer to use commands you can use the following:
:bn # next buffer :bp # previous buffer
You can delete a buffer with
:bd
or
:bd n # where n is the number of a buffer :bd % # current buffer :bd # # previous buffer
I map these to keys to make them useful. My .vimrc has the following:
set autowrite nmap <tab> :bn<cr> nmap <s-tab> :bp<cr> nmap <c-f4> :bn<CR>:bd #<CR>
Set autowrite tells vim to save the file when you change buffers. Vim wants to do this, its a bit annoying. The above maps will map tab and shift tab to next and previous buffer, and ctrl-f4 to delete current buffer. ctrl-f4 will delete the current buffer in a way that will preserve any splits you have open, ie it'll move to the next buffer, then delete the previous one.
This section is partially wrong and needs some cleanup. —AristotlePagaltzis
Vim has several options to do with character encoding, and each does slightly different things.
If you want to be modern, and only use UTF-8 everywhere, put the following in your .vimrc file:
set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8
If you might ever use vim to edit raw binary data, then it's a good idea to make sure that vim doesn't try any conversation on file load:
" leave these as blank, so no conversation done? set fileencoding= set fileencodings=
Display man page inside vim for the word your cursor is currently over.
Shift + k
Display Function Prototype or variable type for the word your cursor is currently over.
[ then i
Move vim cursor to the matching closing symbol for the opening symbol your cursor is on.
%
Move vim cursor to a particular line. <line_no>G
Automatically create folds in a sensible way according to file type.
set foldmethod=syntax
3 pages link to VimNotes: