1.安装vim-full版本
查看结果里是否有vim-full一项
apt-cache search vim
如果有则可以开始安装了
sudo apt-get install vim-full
2.查看vim配置文件
在vim编辑器里面输入
:version
查看vim配置文件:
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
如果不知道$VIM或$HOME具体是哪个目录,可以在vi中用下面的命令查看
:echo $VIM (/usr/share/vim)
:echo $HOME (/Users/zhm 就是用户终端的根目录)
3.配置vim
"""""""""""""""""""""""""""""""基本设置""""""""""""""""""""""""""""""""
"工作在不兼容模式下
set nocp
"设置当前字符编码
set encoding=utf-8
"设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936
"不要备份文件(根据自己需要取舍)
set nobackup
"不要生成swap文件,当buffer被丢弃的时候隐藏它
setlocal noswapfile
set bufhidden=hide
"侦测文件类型
filetype on
"载入文件类型插件
filetype plugin on
"为特定文件类型载入相关缩进文件
filetype indent on
"共享剪贴板
set clipboard+=unnamed
"在处理未保存或只读文件的时候,弹出确认
set confirm
"保存全局变量
set viminfo+=!
"打开拼写检查。拼写有错的单词下方会有红色波浪线,将光标放在单词上,按 z= 就会出现拼写建议,按 ]s 可以直接跳到下一个拼写错误处。
"set spell
"允许backspace和光标键跨越行边界
"set whichwrap+=<,>,h,l
"在命令模式下使用 Tab 自动补全的时候,将补全内容使用一个漂亮的单行菜单形式显示出来。
set wildmenu
"当右键单击窗口的时候,弹出快捷菜单
"set mousemodel=popup
"添加水平滚动条。如果你指定了不折行,那为窗口添加一个水平滚动条就非常有必要了。
set guioptions+=b
"通过使用:commands命令,告诉我们文件的哪一行被改变过
set report=0
"输入:set list命令是应该显示哪些
set listchars=tab:>.,trail:.,extends:>,precedes:<,eol:$
"可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
set mouse=a
set selection=exclusive
set selectmode=mouse,key
"光标移动到buffer的顶部和底部时保持3行距离
set scrolloff=3
"在被分割的窗口间显示空白,便于阅读
"set fillchars=vert:\ ,stl:\ ,stlnc:\
"不让vim发出讨厌的滴滴声
set noerrorbells
"不要闪烁
set novisualbell
"去除vim的GUI版本中的toolbar
"set guioptions-=T
"字符间插入的像素行数目
set linespace=0
set backspace=indent,eol,start
"""""""""""""""""""""""""""""""""显示设置"""""""""""""""""""""""""""""""""""""""""
"设置颜色主题
"colorscheme desert
"显示行号
set number
"记录历史的行数
set history=1000
"语法高亮度显示
syntax on
"高亮显示gtk关键字
syntax keyword gtkType gint gshort guint gushort gulong gdouble gfloat gchar guchar gboolean gpointer highlight link gtkType Type
"超过80列高亮字符
:hi OverLength ctermbg=red ctermfg=white guibg=red guifg=white
:match OverLength '\%80v.*'
"启动显示状态行(1),总是显示状态行(2)
set laststatus=1
"命令行(在状态行下)的高度,默认为1,这里是2
set cmdheight=2
"状态行显示的内容
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}
"状态行颜色
"hi StatusLine guifg=SlateBlue guibg=Yellow
"hi StatusLineNC guifg=Gray guibg=White
"在状态行上显示光标所在位置的行号和列号
set ruler
set rulerformat=%20(%2*%<%f%=\%m%r\ %3l\ %c\ %p%%%)
"突出显示当前行
set cursorline
""""""""""""""""""""""""""""文本编辑设置"""""""""""""""""""""""""""""""""
"自动格式化
set formatoptions=tcrqn
"缩进方式
set autoindent
"set smartindent
set cin
set cino=:4g0t0(sus
"制表符为4空格
set tabstop=4
"统一缩进为4
set softtabstop=4
set shiftwidth=4
"不要用空格代替制表符
"set noexpandtab
"将所有 Tab 替换为空格
set et
"当使用 et 将 Tab 替换为空格之后,按下一个 Tab 键就能插入 4 个空格,但要想删除这 4 个空格,就得按 4 下 Backspace,很不方便。设置 smarttab 之后,就可以只按一下 Backspace 就删除 4 个空格了。
set smarttab
"不要换行
set nowrap
"带有如下符号的单词不要被换行分割
set iskeyword+=_,$,@,%,#,-
""""""""""""""""""""""""""""匹配设置"""""""""""""""""""""""""""""""""
"设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号
set showmatch
"匹配括号高亮的时间(单位是十分之一秒)
set matchtime=5
"在搜索时,输入的词句的逐字符高亮
set incsearch
"默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示
"set nohls
set hls
"搜索时在未完全输入完毕要检索的文本时就开始检索
set is
"使用此设置会快速找到答案,当你找要匹配的单词时,别忘记回车
set incsearch
"在搜索的时候忽略大小写
set ignorecase
"""""""""""""""""""""""Vim color file"""""""""""""""""""""""""""
"http://vimcolorschemetest.googlecode.com/svn/html/index-html.html
set background=dark
set t_Co=256
"let g:colors_name="256-jungle"
let python_highlight_all = 1
let c_gnu = 1
hi Normal ctermfg=253 ctermbg=234 cterm=None
hi Cursor ctermfg=253 ctermbg=57 cterm=None
hi SpecialKey ctermfg=70 ctermbg=None cterm=None
hi Directory ctermfg=57 ctermbg=254 cterm=None
hi ErrorMsg ctermfg=160 ctermbg=245 cterm=None
hi PreProc ctermfg=243 ctermbg=None cterm=Bold
hi Search ctermfg=125 ctermbg=None cterm=Bold
hi Type ctermfg=166 ctermbg=None cterm=Bold
hi Statement ctermfg=172 ctermbg=None cterm=Bold
hi Comment ctermfg=240 ctermbg=None cterm=None
hi LineNr ctermfg=244 ctermbg=233 cterm=None
hi NonText ctermfg=105 ctermbg=None cterm=Bold
hi DiffText ctermfg=165 ctermbg=244 cterm=None
hi Constant ctermfg=76 ctermbg=None cterm=None
hi Todo ctermfg=162 ctermbg=None cterm=Bold
hi Identifier ctermfg=142 ctermbg=None cterm=Bold
hi Error ctermfg=None ctermbg=196 cterm=Bold
hi Special ctermfg=172 ctermbg=None cterm=Bold
hi Ignore ctermfg=221 ctermbg=None cterm=Bold
hi Underline ctermfg=147 ctermbg=None cterm=Italic
hi FoldColumn ctermfg=132 ctermbg=None cterm=None
hi Folded ctermfg=132 ctermbg=None cterm=Bold
hi Visual ctermfg=248 ctermbg=238 cterm=None
hi Pmenu ctermfg=62 ctermbg=233 cterm=None
hi PmenuSel ctermfg=69 ctermbg=232 cterm=Bold
hi PmenuSbar ctermfg=247 ctermbg=233 cterm=Bold
hi PmenuThumb ctermfg=248 ctermbg=233 cterm=None
hi StatusLineNC ctermfg=248 ctermbg=239 cterm=None
hi StatusLine ctermfg=39 ctermbg=239 cterm=None
hi VertSplit ctermfg=239 ctermbg=239 cterm=None
hi TabLine ctermfg=245 ctermbg=239 cterm=None
hi TabLineFill ctermfg=239 ctermbg=239
hi TabLineSel ctermfg=104 ctermbg=236 cterm=Bold
"""""""""""""""""""""""快捷键"""""""""""""""""""""""""""""
nmap <F2> :source ~/.vimrc<CR>
"用空格键来开关折叠
set foldenable
syn region myFold start="{" end="}" transparent fold
syn sync fromstart
set foldmethod=syntax
set foldlevel=100
nnoremap <space> @=((foldclosed(line('.')) < 0)?'zc':'zo')<CR>
"设置快捷方式 Set mapleader
"let mapleader = ","
"快速打开编辑 .vimrc配置文件--->",ee"
"map <silent> <leader>ee :e ~/.vimrc<cr>
"快速保存文件--->",w"
"map <silent> <leader>w :w<cr>
"快速保存并退出文件--->",w"
"map <silent> <leader>wq :wq<cr>
"自动命令,每次写入.vimrc后,都会执行这个自动命令,source一次~/.vimrc
"autocmd! bufwritepost .vimrc source ~/.vimrc
if 0
"""""""""""""""""""""""CTags的设定""""""""""""""""""
"按照名称排序
let Tlist_Sort_Type = "name"
"在右侧显示窗口
let Tlist_Use_Right_Window = 1
"压缩方式
let Tlist_Compart_Format = 1
"如果只有一个buffer,kill窗口也kill掉buffer
let Tlist_Exist_OnlyWindow = 1
"不要关闭其他文件的tags
let Tlist_File_Fold_Auto_Close = 0
"不要显示折叠树
let Tlist_Enable_Fold_Column = 0
"""""""""""""""""""""""""""""Autocommands""""""""""""""""""""""""""""
"只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示
if has("autocmd")
autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,rubyset number
autocmd FileType xml,html vmap <C-o><ESC>'<i<!--<ESC>o<ESC>'>o-->
autocmd FileType java,c,cpp,cs vmap <C-o><ESC>'<o/*<ESC>'>o*/
autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
\ if line("'\"")>0&&line("'\"")<=line("{1}quot;) |
\ exe " normal g`"" |
\ endif
endif
"F5编译和运行C程序,F6编译和运行C++程序
"请注意,下述代码在windows下使用会报错
"需要去掉./这两个字符
"C的编译和运行
map <F5> :callCompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
"C++的编译和运行
map <F6> :callCompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc
"能够漂亮地显示.NFO文件
function! SetFileEncodings(encodings)
let b:myfileencodingsbak=&fileencodings
let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
let &fileencodings=b:myfileencodingsbak
unlet b:myfileencodingsbak
endfunction
au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
au BufReadPost *.nfo callRestoreFileEncodings()
"高亮显示普通txt文件(需要txt.vim脚本)
"au BufRead,BufNewFile * setfiletype txt
"minibufexpl插件的一般设置
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
endif