Vi editor
Contents
- 1 Search and replace
 - 2 FAQ
- 2.1 Syntax highlighting
 - 2.2 Line numbers in vi
 - 2.3 Which editor mode are I'm in
 - 2.4 Show special characters
 - 2.5 VIM and FreeBSD malfunctioning arrow keys in insert mode
 - 2.6 Inserting control characters in documents
 - 2.7 Forcing UTF8 in vim
 - 2.8 Sane C programming .vimrc
 - 2.9 Enhanced C programming ~/.vimrc
 - 2.10 Enhanced Python programmin ~/.vimrc
 
 
Search and replace
Replace all oldtext to newtext starting at line 1 to last line ($). s means search and g globally - not just once.
:1,$s/oldtext/newtext/gFAQ
Syntax highlighting
To use syntax highlighting temporarily use the command :syntax on. To switch it off again use :syntax off.
To use syntax highlighting permanently use
[root@mars ~]# <input>echo "syntax on" >> $HOME/.vimrc</input>Line numbers in vi
To use line numbers temporarily use the command :set number. To switch it off again use :set nonumber.
To use line number permanently use
[root@mars ~]# <input>echo "set number" >> $HOME/.vimrc</input>Which editor mode are I'm in
Use showmode option. Shown below
[root@mars ~]# <input>echo "set showmode" >> $HOME/.vimrc</input>Now you can see which mode you are in by looking at the bottom line
- In insert mode it will write -- INSERT --
 - In replace mode it will write -- REPLACE --
 - In line command mode it will write a colon (:) in the lower left cornor of the screen.
 - In command mode - empty or everything else
 
Show special characters
:set listVIM and FreeBSD malfunctioning arrow keys in insert mode
Set vim to work in nocompatible mode. Not as old vi.
[root@mars ~]# <input>echo "set nocompatible" >> $HOME/.vimrc</input>Inserting control characters in documents
Using the <CTRL>-v and A inserts SOH (001) See ASC-II. <CTRL>-v and <ESC> inserts <ESC>. Remember capital letters.
To see non-visible characters use set list turn of again with set nolist
Forcing UTF8 in vim
Add the following lines to your $HOME/.vimrc
- Note
 - Remember to set your terminal to UTF-8
 
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8
or
set nocompatible
syntax off
set showmode
set tabstop=4
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8
Sane C programming .vimrc
syntax on
set showmode
set tabstop=4
set number
set autoindent
set smartindent
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
endif
Enhanced C programming ~/.vimrc
syntax on
set showmode
" set noet ci pi sts=0 sw=4 ts=4 - same as the next 6 lines
set noexpandtab
set copyindent
set preserveindent
set softtabstop=0
set shiftwidth=4
set tabstop=4
set number
set autoindent
set smartindent
set mouse=v
" Yank and Paste between terminal windows
set clipboard=unnamed
if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
endif