通用版的vim配置

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Maintainer:

"      Amir Salihefendic — @amix3k

"

" Awesome_version:

"      Get this config, nice color schemes and lots of plugins!

"

"      Install the awesome version from:

"

"          https://github.com/amix/vimrc

"

" 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

"

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => General

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Sets how many lines of history VIM has to remember

set history=500

" Enable filetype plugins

filetype plugin on

filetype indent on

" Set to auto read when a file is changed from the outside

set autoread

" With a map leader it's possible to do extra key combinations

" like w saves the current file

let mapleader = ","

" Fast saving

nmap w :w!

" :W sudo saves the file

" (useful for handling the permission-denied error)

command W w !sudo tee % > /dev/null

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => VIM user interface

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Set 7 lines to the cursor - when moving vertically using j/k

set so=7

" Avoid garbled characters in Chinese language windows OS

let $LANG='en'

set langmenu=en

source $VIMRUNTIME/delmenu.vim

source $VIMRUNTIME/menu.vim

" Turn on the Wild menu

set wildmenu

" Ignore compiled files

set wildignore=*.o,*~,*.pyc

if has("win16") || has("win32")

    set wildignore+=.git\*,.hg\*,.svn\*

else

    set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store

endif

"Always show current position

set ruler

" Height of the command bar

set cmdheight=2

" 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

" Highlight 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

" Properly disable sound on errors on MacVim

if has("gui_macvim")

    autocmd GUIEnter * set vb t_vb=

endif

" Add a bit extra margin to the left

set foldcolumn=1

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Colors and Fonts

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Enable syntax highlighting

syntax enable

" Enable 256 colors palette in Gnome Terminal

if $COLORTERM == 'gnome-terminal'

    set t_Co=256

endif

try

    colorscheme desert

catch

endtry

set background=dark

" Set extra options when running in GUI mode

if has("gui_running")

    set guioptions-=T

    set guioptions-=e

    set t_Co=256

    set guitablabel=%M\ %t

endif

" Set utf8 as standard encoding and en_US as the standard language

set encoding=utf8

" Use Unix as the standard file type

set ffs=unix

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Files, backups and undo

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Turn backup off, since most stuff is in SVN, git et.c anyway...

set nobackup

set nowb

set noswapfile

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Text, tab and indent related

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Use spaces instead of tabs

set expandtab

" Be smart when using tabs ;)

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

" Super useful! From an idea by Michael Naumann

vnoremap * :call VisualSelection('', '')/=@/

vnoremap # :call VisualSelection('', '')?=@/

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Moving around, tabs, windows and buffers

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Map to / (search) and Ctrl- to ? (backwards search)

map /

map ?

" Disable highlight when is pressed

map :noh

" Smart way to move between windows

map j

map k

map h

map l

" Close the current buffer

map bd :Bclose:tabclosegT

" Close all the buffers

map ba :bufdo bd

map l :bnext

map h :bprevious

" Useful mappings for managing tabs

map tn :tabnew

map to :tabonly

map tc :tabclose

map tm :tabmove

map t :tabnext

" Let 'tl' toggle between this and the last accessed tab

let g:lasttab = 1

nmap tl :exe "tabn ".g:lasttab

au TabLeave * let g:lasttab = tabpagenr()

" Opens a new tab with the current buffer's path

" Super useful when editing files in the same directory

map te :tabedit =expand("%:p:h")/

" Switch CWD to the directory of the open buffer

map cd :cd %:p:h:pwd

" Specify 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 (You want this!)

au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

""""""""""""""""""""""""""""""

" => Status line

""""""""""""""""""""""""""""""

" Always show the status line

set laststatus=2

" Format the status line

set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l\ \ Column:\ %c

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Editing mappings

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Remap VIM 0 to first non-blank character

map 0 ^

" Move a line of text using ALT+[jk] or Command+[jk] on mac

nmap mz:m+`z

nmap mz:m-2`z

vmap :m'>+`mzgv`yo`z

vmap :m'<-2`>my`

if has("mac") || has("macunix")

  nmap

  nmap

  vmap

  vmap

endif

" Delete trailing white space on save, useful for some filetypes ;)

fun! CleanExtraSpaces()

    let save_cursor = getpos(".")

    let old_query = getreg('/')

    silent! %s/\s\+$//e

    call setpos('.', save_cursor)

    call setreg('/', old_query)

endfun

if has("autocmd")

    autocmd BufWritePre *.txt,*.js,*.py,*.wiki,*.sh,*.coffee :call CleanExtraSpaces()

endif

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Spell checking

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Pressing ,ss will toggle and untoggle spell checking

map ss :setlocal spell!

" Shortcuts using

map sn ]s

map sp [s

map sa zg

map s? z=

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Misc

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Remove the Windows ^M - when the encodings gets messed up

noremap m mmHmt:%s///ge'tzt'm

" Quickly open a buffer for scribble

map q :e ~/buffer

" Quickly open a markdown buffer for scribble

map x :e ~/buffer.md

" Toggle paste mode on and off

map pp :setlocal paste!

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" => Helper functions

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Returns true if paste mode is enabled

function! HasPaste()

    if &paste

        return 'PASTE MODE  '

    endif

    return ''

endfunction

" Don't close window, when deleting a buffer

command! Bclose call BufcloseCloseIt()

function! BufcloseCloseIt()

    let l:currentBufNum = bufnr("%")

    let l:alternateBufNum = bufnr("#")

    if buflisted(l:alternateBufNum)

        buffer #

    else

        bnext

    endif

    if bufnr("%") == l:currentBufNum

        new

    endif

    if buflisted(l:currentBufNum)

        execute("bdelete! ".l:currentBufNum)

    endif

endfunction

function! CmdLine(str)

    call feedkeys(":" . a:str)

endfunction

function! VisualSelection(direction, extra_filter) range

    let l:saved_reg = @"

    execute "normal! vgvy"

    let l:pattern = escape(@", "\\/.*'$^~[]")

    let l:pattern = substitute(l:pattern, "\n$", "", "")

    if a:direction == 'gv'

        call CmdLine("Ack '" . l:pattern . "' " )

    elseif a:direction == 'replace'

        call CmdLine("%s" . '/'. l:pattern . '/')

    endif

    let @/ = l:pattern

    let @" = l:saved_reg

endfunction

:set mouse-=a

~

你可能感兴趣的:(通用版的vim配置)