在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有行号的、语法高亮度显示、智能缩进等功能的。
为了更好的在vim下进行工作,需要手动配置一个配置文件: .vimrc
在启动vim时,当前用户根目录下的 .vimrc 文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把 .vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:
$vim ~/.vimrc
设置完成后
$:x 或者 $:wq
进行保存退出即可。
下面给出一个例子,已经很详细了,是某位大神的配置文件,这里对其表示敬意。
"双引号开始的行为注释行,下同。
" File: _vimrc
" Author: xuleaperxuleaper@gmail.com
" Description: xuleaper's personal vim config file.
" Last Modified: $Id: _vimrc 467 2012-09-08 03:49:05Z $
" Blog: http://www.gracecode.com/
" Since:2010-06-15
" History:
" 2012-06-08
" +vundle支持,更加灵活的管理插件
" 2012-01-20
" +整理vimrc结构
" 2011-09-08
" +在网络配置文件的基础上,编写自己的vimrc
"=============================
" vimrc_structure
" |
" +--Environment setting
" |
" +--Multi_language setting
" |
" +--GUI_laguage setting
" |
" +--AutoCmd
" |
" +--Plugin configure
" |
" +--Script's function
" |
" +--Key shortcut
" |
" ---Bundle setting
"=============================
if exists("mingcheng")
finish
endif
let g:mingcheng = 1
if v:version < 700
echoerr 'This _vimrc requires Vim 7 or later.'
quit
endif
" ============
" Environment
" ============
" Color Scheme
if has('syntax')
" 默认编辑器配色
au BufNewFile,BufRead,BufEnter,WinEnter * colo desert
" 各不同类型的文件配色不同
au BufNewFile,BufRead,BufEnter,WinEnter *.wiki colo void
" 保证语法高亮
syntax on
endif
" 保留历史记录
set history=500
" 行控制
set linebreak
set nocompatible
set textwidth=80
set wrap
" 标签页
set tabpagemax=9
set showtabline=2
" 控制台响铃
set noerrorbells
set novisualbell
set t_vb=
" 行号和标尺
set number
set ruler
set rulerformat=%15(%c%V\ %p%%%)
" 命令行于状态行
set ch=2
set stl=\ [File]\ %F%m%r%h%y[%{&fileformat},%{&fileencoding}]\ %w\ \ [PWD]\ %r%{GetPWD()}%h\ %=\ [Line]%l/%L\ %=\[%P]
set ls=2 " 始终显示状态行
set wildmenu "命令行补全以增强模式运行
" 定义
let mapleader = ","
let maplocalleader = ","
" Search Option
set hlsearch " Highlight search things
set magic " Set magic on, for regular expressions
set showmatch " Show matching bracets when text indicator is over them
set mat=2 " How many tenths of a second to blink
set noincsearch
" 制表符
set tabstop=4
set expandtab
set smarttab
set shiftwidth=4
set softtabstop=4
" 状态栏显示目前所执行的指令
set showcmd
" 缩进
set autoindent
set smartindent
" 自动重新读入
set autoread
" 插入模式下使用
set backspace=indent,eol,start
" 设定在任何模式下鼠标都可用
" 自动改变当前目录
if has('netbeans_intg')
set autochdir
endif
" 备份和缓存
set nobackup
"set noswapfile
" 自动完成
set complete=.,w,b,k,t,i
set completeopt=longest,menu
" 代码折叠
set foldmethod=marker
" 共享外部剪贴板
set clipboard+=unnamed
"设置快速编辑.vimrc文件 ,e 编辑.vimrc
" 快速修改 vimrc 文件
if has("win32")
map
else
map
endif
"保存.vimrc文件后会自动调用新的.vimrc
autocmd! bufwritepost _vimrc source $VIM/_vimrc
" ======================
" Multi_language setting
" default encoding UTF
" ======================
if has("multi_byte")
set encoding=utf-8
"set fenc=cp936
" English messages only
"language messages zh_CN.utf-8
if has('win32')
language chinese
let &termencoding=&encoding
endif
set fencs=utf-8,gbk,chinese,latin1
set formatoptions+=mM
set nobomb " 不使用 Unicode 签名
if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)'
set ambiwidth=double
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte"
endif
" 永久撤销,Vim7.3 新特性
if has('persistent_undo')
set undofile
" 设置撤销文件的存放的目录
if has("unix")
set undodir=/tmp/,~/tmp,~/Temp
else
set undodir=d:/temp/
endif
set undolevels=1000
set undoreload=10000
endif
" Diff 模式的时候鼠标同步滚动 for Vim7.3
if has('cursorbind')
set cursorbind
end
"============
" GUI setting
" ===========
if has('gui_running')
" 只显示菜单
set guioptions=mcr
" 高亮光标所在的行
set cursorline
if has("win32")
" Windows 兼容配置
source $VIMRUNTIME/mswin.vim
source $VIMRUNTIME/menu.vim
source $ViMRUnTIME/delmenu.vim
" f11 最大化
nmap
nmap
" 字体配置
exec 'set guifont='.iconv('Consolas', &enc, 'gbk').':h12:cANSI'
exec 'set guifontwide='.iconv('Microsoft\ YaHei', &enc, 'gbk').':h12:cGB2312'
endif
" Under Linux/Unix etc.
if has("unix") && !has('gui_macvim')
set guifont=Courier\ 10\ Pitch\ 11
endif
" Under the Mac(MacVim)
if has("mac") || has("gui_macvim")
if has("gui_macvim")
" MacVim 下的字体配置
set guifont=Courier_New:h14
set guifontwide=YouYuan:h14
" 半透明和窗口大小
set transparency=2
set lines=200 columns=120
" 使用 MacVim 原生的全屏幕功能
let s:lines=&lines
let s:columns=&columns
func! FullScreenEnter()
set lines=999 columns=999
set fu
endf
func! FullScreenLeave()
let &lines=s:lines
let &columns=s:columns
set nofu
endf
func! FullScreenToggle()
if &fullscreen
call FullScreenLeave()
else
call FullScreenEnter()
endif
endf
set guioptions+=e
" Mac 下,按
nmap
nmap
" I like TCSH :^)
set shell=/bin/tcsh
" Set input method off
set imdisable
" Set QuickTemplatePath
let g:QuickTemplatePath = $HOME.'/.vim/templates/'
" 如果为空文件,则自动设置当前目录为桌面
lcd ~/Desktop/
endif
endif
endif
" =========
" AutoCmd
" =========
if has("autocmd")
filetype plugin indent on
" 括号自动补全
func! AutoClose()
:inoremap ( ()
:inoremap " ""
:inoremap ' ''
:inoremap { {}
:inoremap [ []
:inoremap )
:inoremap }
:inoremap ]
endf
func! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\<Right>"
else
return a:char
endif
endf
"""""""""""""""""""""""""""""""""""""""""""""
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=80
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
augroup END
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Auto close quotation marks for PHP, Javascript, etc, file
au FileType php,javascript,c,cpp exe AutoClose()
" JavaScript 语法高亮
au FileType html,javascript let g:javascript_enable_domhtmlcss = 1
au BufRead,BufNewFile *.js setf jquery
" 给各语言文件添加 Dict
if has('win32')
let s:dict_dir = $VIM.'\vimfiles\dict\'
else
let s:dict_dir = $HOME."/.vim/dict/"
endif
let s:dict_dir = "setlocal dict+=".s:dict_dir
au FileType php exec s:dict_dir."php_funclist.dict"
au FileType css exec s:dict_dir."css.dict"
au FileType javascript exec s:dict_dir."javascript.dict"
" 格式化 JavaScript 文件
au FileType javascript map
au FileType javascript set omnifunc=javascriptcomplete#CompleteJS
" 增加 ActionScript 语法支持
au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.as setf actionscript
" CSS3 语法支持
au BufRead,BufNewFile *.css set ft=css syntax=css3
" 增加 Objective-C 语法支持
au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.m,*.h setf objc
" 将指定文件的换行符转换成 UNIX 格式
au FileType php,javascript,html,css,python,vim,vimwiki set ff=unix
" 自动最大化窗口
if has('gui_running')
if has("win32")
au GUIEnter * simalt ~x
"elseif has("unix")
"au GUIEnter * winpos 0 0
"set lines=999 columns=999
" 给 Win32 下的 gVim 窗口设置透明度
au GUIEnter * call libcallnr("vimtweak.dll", "SetAlpha", 225)
endif
endif
endif
" =================
" Plugin Configure
" =================
"neocomplcache setting
" VIM HTML 插件
let g:no_html_toolbar = 'yes'
"""""""""""""""""""""""""""""""""""""""""""""""""""""
" VimWiki 配置
if !exists("g:vimwiki_list")
let g:vimwiki_list = [
\{"path": "~/Wiki/Default/", "path_html": "~/Sites/wiki/",
\ "html_footer": "~/Wiki/Default/footer.tpl", "html_header": "~/Wiki/Default/header.tpl",
\ "auto_export": 1},
\{"path": "~/Wiki/WebWW/", "path_html": "~/Sites/webww/", "auto_export": 1}
\]
let g:vimwiki_auto_checkbox = 0
if has('win32')
" 注意!
" 1、如果在 Windows 下,盘符必须大写
" 2、路径末尾最好加上目录分隔符
let s:vimwiki_root = "$VIM/Vimwiki"
let g:vimwiki_list = [
\{"path": s:vimwiki_root."/Default/",
\ "html_footer": s:vimwiki_root."/Default/footer.html",
\ "html_header": s:vimwiki_root."/Default/header.html",
\ "path_html": s:vimwiki_root."/Default/_output/", "auto_export": 1},
\{"path": s:vimwiki_root."/WebWW/",
\"path_html": s:vimwiki_root."/WebWW/html/", "auto_export": 1}
\]
let g:vimwiki_w32_dir_enc = 'cp936'
endif
au FileType vimwiki set ff=unix fenc=utf8 noswapfile nobackup
"au FileType vimwiki imap
nmap
nmap
endif
" on Windows, default charset is gbk
if has("win32")
let g:fontsize#encoding = "cp936"
endif
""""""""""""""""""""""""""""""""""""
" PYTHON 相关的设置
"设置= + - * 前后自动空格
"设置,后面自动添加空格
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
au FileType python inoremap
" ==================
" script's functions
"===================
" 获取当前目录
func! GetPWD()
return substitute(getcwd(), "", "", "g")
endf
" 跳过页头注释,到首行实际代码
func! GotoFirstEffectiveLine()
let l:c = 0
while l:c
function! Swap()
if getline('.')[col('.') - 1] =~ ")"
return "\<ESC>la:"
else
return ":"
endif
endf
""""""""""""""""""""""""""""""""""""""""
"实现+-*/前后自动添加空格,逗号后面自动添加空格,适用python
"支持+= -+ *= /+格式
function! EqualSign(char)
if a:char =~ '=' && getline('.') =~ ".*("
return a:char
endif
let ex1 = getline('.')[col('.') - 3]
let ex2 = getline('.')[col('.') - 2]
if ex1 =~ "[-=+><>\/\*]"
if ex2 !~ "\s"
return "\<ESC>i".a:char."\<SPACE>"
else
return "\<ESC>xa".a:char."\<SPACE>"
endif
else
if ex2 !~ "\s"
return "\<SPACE>".a:char."\<SPACE>\<ESC>a"
else
return a:char."\<SPACE>\<ESC>a"
endif
endif
endf
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
"SwitchToBuf()实现它在所有标签页的窗口中查找指定的文件名,如果找到这样一个窗口,
"就跳到此窗口中;否则,它新建一个标签页来打开vimrc文件
"上面自动编辑.vimrc文件用到的函数
function! SwitchToBuf(filename)
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
""""""""""""""""""""""""""""""""""""""""""""""""""
"Last change用到的函数,返回时间,能够自动调整位置
function! TimeStamp(…)
let sbegin = ''
let send = ''
if a:0 >= 1
let sbegin = a:1.'\s*'
endif
if a:0 >= 2
let send = ' '.a:2
endif
let pattern = 'Last Change: .\+'
\. send
let pattern = '^\s*' . sbegin . pattern . '\s*$'
let now = strftime('%Y-%m-%d %H:%M:%S',
\localtime())
let row = search(pattern, 'n')
if row == 0
let now = a:1 . ' Last Change: '
\. now . send
call append(2, now)
else
let curstr = getline(row)
let col = match( curstr , 'Last')
let spacestr = repeat(' ',col - 1)
let now = a:1 . spacestr . 'Last Change: '
\. now . send
call setline(row, now)
endif
endfunction
" =============
" Key Shortcut
" =============
nmap
nmap
nmap
nmap
nmap
for i in range(1, &tabpagemax)
exec 'nmap
endfor
" 插件快捷键
nmap
nmap
nmap
" 插入模式按 F4 插入当前时间
imap
map
map
nmap
map
map
" 新建 XHTML 、PHP、Javascript 文件的快捷键
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
nmap
" 直接查看第一行生效的代码
nmap
" 按下 Q 不进入 Ex 模式,而是退出
nmap Q :x
"==================
" Bundle setting
" =================
set nocompatible " be iMproved
filetype off " required!
set rtp+=$VIM/vimfiles/bundle/vundle/
"call vundle#rc('$VIM/vimfiles/bundle')
" let Vundle manage Vundle
" required!
" My Bundles here:
" original repos on github
"========================================
" non github repos
"========================================
"call pathogen#infect("$vim/vimfiles/bundle")
filetype plugin indent on " required!
手机扫一扫
移动阅读更方便
你可能感兴趣的文章