Created
September 5, 2012 06:03
-
-
Save jlyu/3631336 to your computer and use it in GitHub Desktop.
My vim editor vimrc file. compatible with liunx and windows
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Sections: | |
" -> General | |
" -> VIM user interface | |
" -> Colors and Fonts | |
" -> Files and backups | |
" -> Text, tab and indent related | |
" -> Visual mode related | |
" -> Moving around, tabs and buffers | |
" -> Status line | |
" -> Editing mappings | |
" -> vimgrep searching and cope displaying | |
" -> Spell checking | |
" -> Misc | |
" -> Helper functions | |
" | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Test Platform | |
function! MySys() | |
if has("win32") | |
return "windows" | |
else | |
return "linux" | |
endif | |
endfunction | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" General | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
set nu | |
set mouse=a | |
set history=100 | |
" set to auto read when a file is changed from the outside | |
set autoread | |
" Enable filetype plugins | |
filetype plugin on | |
filetype indent on | |
" With a map leader it's a possible to do extra key combinations | |
" like <leader>w saves the current file | |
" Set mapleader | |
let mapleader = "," | |
let g:mapleader = "," | |
if MySys() == 'linux' | |
"Fast reloading of the .vimrc | |
map <silent> <leader>ss :source ~/.vimrc<cr> | |
"Fast editing of .vimrc | |
map <silent> <leader>ee :e ~/.vimrc<cr> | |
"When .vimrc is edited, reload it | |
autocmd! bufwritepost .vimrc source ~/.vimrc | |
elseif MySys() == 'windows' | |
"Fast reloading of the _vimrc | |
map <silent> <leader>ss :source ~/_vimrc<cr> | |
"Fast editing of _vimrc | |
map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr> | |
"When _vimrc is edited, reload it | |
autocmd! bufwritepost _vimrc source ~/_vimrc | |
source $VIMRUNTIME/vimrc_example.vim | |
source $VIMRUNTIME/mswin.vim | |
behave mswin | |
endif | |
" Fast saving | |
nmap <leader>w :w!<cr> | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" VIM user interface | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Set 7 lines to the cursor | |
set so=7 | |
"? Tuen on the wild menu | |
set wildmenu | |
" Ignore compiled files | |
set wildignore=*.o,*~,*.pyc | |
" Always show current position | |
set ruler | |
" Height of the command bar | |
set cmdheight=1 | |
" A buffer becomes hidden when it is abandoned | |
set hid | |
" Configure backspace so it acts as it should act | |
set backspace=eol,start,indent | |
set whichwrap+=<,>,h,l | |
" Ignore case when searching | |
set ignorecase | |
" When searching try to be smart about cases | |
set smartcase | |
" Hightlight search results | |
set hlsearch | |
"? Makes search act like search in modern browsers | |
set incsearch | |
" Don't redraw while executing macros (good performance config) | |
set lazyredraw | |
"? For regular expressions turn magic on | |
set magic | |
" Show matching brackets when text indicator is over them | |
set showmatch | |
" How many tenths of a second to blink when matching brackets | |
set mat=2 | |
" No annoying sound on errors | |
set noerrorbells | |
set novisualbell | |
set t_vb= | |
set tm=500 | |
" Background transparency settings | |
if MySys() == 'windows' | |
map <silent> <F10> :call SetAlpha()<CR> | |
map <silent> <S-F12> :call ChangeAlpha(1)<CR> | |
map <silent> <S-F11> :call ChangeAlpha(0)<CR> | |
let g:alpha=255 | |
let g:alpha_t=210 | |
let g:alpha_s=15 | |
"no menu, no toolbar | |
set go= | |
endif | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Colors and Fonts | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Enable syntax highlighting | |
syntax enable | |
if MySys() == 'linux' | |
set t_Co=256 | |
colorscheme desert | |
set background=dark | |
" Set utf8 as standard encoding and en_US as standard language | |
set encoding=utf8 | |
" Use Unix as the standard file type | |
set ffs=unix,dos,mac | |
elseif MySys() == 'windows' | |
colorscheme slate3 "solarized molokai | |
set background=dark | |
let g:solarized_termcolors=256 | |
set guifont=monaco:h9 | |
set encoding=utf-8 | |
set fileencodings=utf-8,chinese,latin-1 | |
let &termencoding=&encoding | |
source $VIMRUNTIME/delmenu.vim | |
language messages zh_CN.utf-8 | |
endif | |
" Set extra options when running in GUI mode | |
if has("gui_running") | |
set guioptions-=T | |
set guioptions+=e | |
set guitablabel=%M\ %t | |
endif | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Files, backups and undo | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Turn backup off | |
set nobackup | |
set nowb | |
set noswapfile | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Text, tab and indent related | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Use spaces instead of tabs | |
"set expandtab | |
" Be smart when using tab | |
set smarttab | |
" 1 tab = 4 spaces | |
set shiftwidth=4 | |
set tabstop=4 | |
"? Linebreak on 500 characters | |
set lbr | |
set tw=500 | |
set ai "Auto indent | |
set si "Smart indent | |
set wrap "Wrap lines | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Visual mode related | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Visual mode pressing * or # searches for the current selection | |
vnoremap <silent> * :call VisualSelection('f')<CR> | |
vnoremap <silent> # :call VisualSelection('b')<CR> | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Moving around, tabs, windows and buffers | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Treat long lines as break lines | |
map j gj | |
map k gk | |
" Map <space> to /(search) and Ctrl-<Space> to ? | |
map <space> / | |
map <c-space> ? | |
" Disable hightlight when <leader><cr> is pressed | |
map <silent> <leader><cr> :noh<cr> | |
" Smart way to move between windows | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
" Close the current buffer | |
"map <leader>bd :Bclose<cr> | |
" Close all the buffers | |
"map <leader>ba :1,1000 bd!<cr> | |
" Useful mapping for managing tabs | |
map <leader>tn :tabnew<cr> | |
map <leader>to :tabonly<cr> | |
map <leader>tc :tabclose<cr> | |
map <leader>tm :tabmove | |
" Open a new tab with the current buffer's path | |
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/ | |
" Switch cwd to the directory of the open buffer | |
map <leader>cd :cd %:p:h<cr>:pwd<cr> | |
" Spectify the behavior when switching between buffers | |
try | |
set switchbuf=useopen,usetab,newtab | |
set stal=2 | |
catch | |
endtry | |
" Return to last edit position when opening files | |
autocmd BufReadPost * | |
\ if line("'\"") > 0 && line("'\"") <= line("$") | | |
\ exe "normal! g`\"" | | |
\ endif | |
" Remember info about open buffers on close | |
set viminfo^=% | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Status line | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Always show the status line | |
set laststatus=2 | |
" Format the status line | |
"set statusline=%<%F%h%m%r%h%w%y\ %{&ff}\ %{strftime(\"%Y/%m/%d-%H:%M\")}%=\ col:%c%V\ \ pos:%o\ Line:%l\,%L\ %P | |
" set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l | |
set statusline=%f<%F%h%m%r%h%w%y\ %{&ff}\ %{strftime(\"%Y/%m/%d-%H:%M\")}%=\ CWD:\%r%{getcwd()}%h\ \ Line:%l\ \ %P | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Editing mappings | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Remap VIM 0 to first non-blank character | |
"map 0 ^ | |
" Delete trailing white space on save, useful for Python and coffeeScript | |
function! DeleteTrailingWS() | |
exe "normal mz" | |
%s/\s\+$//ge | |
exe "normal `z" | |
endfunction | |
autocmd BufWrite *.py :call DeleteTrailingWS() | |
autocmd BufWrite *.coffee :call DeleteTrailingWS() | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" vimgrep searching and cope displaying | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" When you press gv you vimgrep after the selected text | |
"vnoremap <silent> gv :call VisualSelection('gv')<CR> | |
" Open vimgrep and put the cursor in the right position | |
"map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left> | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Spell checking | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Press ,ssp will toggle and untoggle spell checking | |
map <leader>ssp :setlocal spell!<cr> | |
set compatible "open vi compatiable function | |
set showcmd | |
set foldcolumn=3 | |
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$" | |
set fileencodings=utf-8,latin1 | |
endif | |
set nocompatible " Use Vim defaults (much better!) | |
set bs=indent,eol,start " allow backspacing over everything in insert mode | |
set viminfo='20,\"50 " read/write a .viminfo file, don't store more | |
" than 50 lines of registers | |
if has("cscope") && filereadable("/usr/bin/cscope") | |
set csprg=/usr/bin/cscope | |
set csto=0 | |
set cst | |
set nocsverb | |
" add any database in current directory | |
if filereadable("cscope.out") | |
cs add cscope.out | |
" else add database pointed to by environment | |
elseif $CSCOPE_DB != "" | |
cs add $CSCOPE_DB | |
endif | |
set csverb | |
endif | |
" Switch syntax highlighting on, when the terminal has colors | |
" Also switch on highlighting the last used search pattern. | |
if &t_Co > 2 || has("gui_running") | |
syntax on | |
set hlsearch | |
endif | |
if &term=="xterm" | |
set t_Co=8 | |
set t_Sb=[4%dm | |
set t_Sf=[3%dm | |
endif | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Helper Functions | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
function! SwitchToBuf(filename) | |
"let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "") | |
" find in current tab | |
let bufwinnr = bufwinnr(a:filename) | |
if bufwinnr != -1 | |
exec bufwinnr . "wincmd w" | |
return | |
else | |
" find in each tab | |
tabfirst | |
let tab = 1 | |
while tab <= tabpagenr("$") | |
let bufwinnr = bufwinnr(a:filename) | |
if bufwinnr != -1 | |
exec "normal " . tab . "gt" | |
exec bufwinnr . "wincmd w" | |
return | |
endif | |
tabnext | |
let tab = tab + 1 | |
endwhile | |
" not exist, new tab | |
exec "tabnew " . a:filename | |
endif | |
endfunction | |
" Returns true if paste mode is enabled | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
en | |
return '' | |
endfunction | |
" Visual Selection | |
function! VisualSelection(direction) range | |
let l:saved_reg = @" | |
execute "normal! vgvy" | |
let l:pattern = escape(@", '\\/.*$^~[]') | |
let l:pattern = substitute(l:pattern, "\n$", "", "") | |
if a:direction == 'b' | |
execute "normal ?" . l:pattern . "^M" | |
elseif a:direction == 'gv' | |
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.') | |
elseif a:direction == 'replace' | |
call CmdLine("%s" . '/'. l:pattern . '/') | |
elseif a:direction == 'f' | |
execute "normal /" . l:pattern . "^M" | |
endif | |
let @/ = l:pattern | |
let @" = l:saved_reg | |
endfunction | |
function! CmdLine(str) | |
exe "menu Foo.Bar :" . a:str | |
emenu Foo.Bar | |
unmenu Foo | |
endfunction | |
function! SetAlpha(...) | |
if !exists("a:1") | |
let a = (g:alpha==255) ? g:alpha_t : 255 | |
call libcallnr("vimtweak.dll", "SetAlpha", a) | |
let g:alpha=a | |
unlet a | |
else | |
call libcallnr("vimtweak.dll", "SetAlpha", a:1) | |
endif | |
endfunction | |
function! ChangeAlpha(change) | |
if a:change == 1 | |
let g:alpha = (g:alpha<=(255-g:alpha_s)) ? (g:alpha+g:alpha_s) : 255 | |
let g:alpha_t = g:alpha | |
endif | |
if a:change == 0 | |
let g:alpha = (g:alpha>=(10+g:alpha_s)) ? (g:alpha-g:alpha_s) : 10 | |
let g:alpha_t = g:alpha | |
endif | |
call SetAlpha(g:alpha) | |
endfunction | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
autocmd BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\" | |
autocmd BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m | |
autocmd BufRead *.py nmap <F5> :!python %<CR> | |
autocmd BufRead *.py nmap <F6> :make<CR> | |
autocmd BufRead *.py copen |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment