通用版的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 <leader>w saves the current file

let mapleader = ","

" Fast saving

nmap <leader>w :w!<cr>

" :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 <silent> * :<C-u>call VisualSelection('', '')<CR>/<C-R>=@/<CR><CR>

vnoremap <silent> # :<C-u>call VisualSelection('', '')<CR>?<C-R>=@/<CR><CR>

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

" => Moving around, tabs, windows and buffers

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

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

map <space> /

map <c-space> ?

" Disable highlight 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>:tabclose<cr>gT

" Close all the buffers

map <leader>ba :bufdo bd<cr>

map <leader>l :bnext<cr>

map <leader>h :bprevious<cr>

" Useful mappings for managing tabs

map <leader>tn :tabnew<cr>

map <leader>to :tabonly<cr>

map <leader>tc :tabclose<cr>

map <leader>tm :tabmove

map <leader>t<leader> :tabnext

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

let g:lasttab = 1

nmap <Leader>tl :exe "tabn ".g:lasttab<CR>

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

" 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 <M-j> mz:m+<cr>`z

nmap <M-k> mz:m-2<cr>`z

vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z

vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

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

  nmap <D-j> <M-j>

  nmap <D-k> <M-k>

  vmap <D-j> <M-j>

  vmap <D-k> <M-k>

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 <leader>ss :setlocal spell!<cr>

" Shortcuts using <leader>

map <leader>sn ]s

map <leader>sp [s

map <leader>sa zg

map <leader>s? z=

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

" => Misc

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

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

noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm

" Quickly open a buffer for scribble

map <leader>q :e ~/buffer<cr>

" Quickly open a markdown buffer for scribble

map <leader>x :e ~/buffer.md<cr>

" Toggle paste mode on and off

map <leader>pp :setlocal paste!<cr>

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

" => 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 <SID>BufcloseCloseIt()

function! <SID>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

~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容