白话Vim和它的配置

来源:互联网 发布:比较好的淘宝男装店铺 编辑:程序博客网 时间:2024/05/20 06:29

    引子----惭愧的讲,玩linux已经很久了,不过一直停留在“玩”的阶段。很多问题可以凭经验和思考迎刃而解,但是却给别人讲不清楚,这也是我到处开博到处传资源就是不憋博文的真相。今天被某妹子刺激了一下,说我有“沟通障碍综合症”。这个不能忍,我还是需要写篇博文证明下我是个正常人。

           首先,Vi及其改进产品Vim可谓是linux/Unix系统最好用的编辑器,没有之一(Emacs用户请先不要急得抡板砖拍我),它是计算机界的大神Bill Joy的杰作。作为SUN前首席科学家、BSD Unix的主要缔造者之一、SPARC架构主要设计者,Bill一定深谙Unix的哲学中最重要的准则:小即是美,让每个程序只做好一件事情。所以说,’Simple is Elegant‘,VIM就有这样的特点,相比较Emacs,尽管论述它的优点的文章摞起来可以直接把我砸死,但是我还是想说,如果这个世界上有个神物可以解决很多问题,那这个神物肯定啥问题都解决不好----我已经用上了我认为最好的系统GNU/Debian,我觉得没必要再在里面开一个OS,遗憾的讲,Emacs就是这么个臃肿的东西。如果非得用学习曲线去标榜Emacs用户的水平,我觉得玩linux的大神可以每人先背完内核源代码再去开终端。

    好了,废话说的太多,直接进入正题吧。

    Vim是一个伶俐的小姑娘,做事情很麻利,绝不拖泥带水,主要表现在(1)多模式的编辑环境。这个恐怕最饱受不了解她的人诟病了,因为不是所有人都知道妹子只有在工作和生活高度去耦合的情况下才会去爱。同样道理,编辑就是编辑,命令就是命令,就像windows用户在丑陋的notepad编辑完文本后会抬起手用鼠标够着菜单点下保存一样,在这两种基本模式的切换可以省下很多时间但却可以明确两种完全不同的工作状态,况且命令模式下还有强大的vi命令和ex命令的支持,丰富的功能和高效地利用键盘资源让人感觉鼠标真是一种多余。(2)高效的文件的操作。VIM可以通知打开多个文件把这些文件全屏幕分屏显示(:split filename),此外,可以通过:next :previous :rewind :last Ctl+^在文件间迅速切换,相当方便。(3)快速移动和定位。按字或者其倍数移动、利用标记一定(mc,:marks),通过强大的正则化引擎快速查找,剪切复制折叠文本等等,这仅仅只需要弹指之间的就可以搞定。网上有好多现成的教程和牛人的博客,这里推荐”Learning.the.Vi.and.VIm.Editors“和相应的中文版”学习VI和VIM编辑器“,欢迎下载!

    其次,关于VIM的安装,这个在Unix和linux任何一个版本都应该有吧,没有就yum或者aptitude install vim。

    最后说一下配置,VIM的配置文件是在.vimrc中的,在同用户的根目录下./.vim文件夹下就是对应的各种插件,这里强烈推荐pathogen,作为管理插件的插件还是相当nice的,此外常用的还有Nerdtree和工具栏,语法高亮,C、C++和python自动补全等,为了不把VIM变成Emacs,我一直本着“简约是美”的原则,尽量减少使用插件的使用。当然必须的配置还是需要的,相应的下载可以到github上找到,这里有个不错的打包,直接解压可用,对应的.vimrc配置文件的源代码如下:

"###########################################################################".common conf"{{                  通用配置set ai                      "自动缩进set bs=2                    "在insert模式下用退格键删除set showmatch               "代码匹配set laststatus=2            "总是显示状态行set expandtab               "以下三个配置配合使用,设置tab和缩进空格数set shiftwidth=4set tabstop=4"set cursorline             "为光标所在行加下划线set number                  "显示行号set autoread                "文件在Vim之外修改过,自动重新读入set ignorecase              "检索时忽略大小写set fileencodings=uft-8,gbk "使用utf-8或gbk打开文件set hls                     "检索时高亮显示匹配项set helplang=cn             "帮助系统设置为中文set foldmethod=syntax       "代码折叠"}}"###########################################################################"pathogen是Vim用来管理插件的插件"{call pathogen#infect()call pathogen#helptags()"}"###########################################################################"conf for tabs, 为标签页进行的配置,通过ctrl h/l切换标签等"{{let mapleader = ','nnoremap <C-l> gtnnoremap <C-h> gTnnoremap <leader>t : tabe<CR>"}}"###########################################################################"taglist,通过ctrl w 切换"{let Tlist_Show_One_File = 1"只显示当前文件的taglist,默认是显示多个let Tlist_Exit_OnlyWindow = 1"如果taglist是最后一个窗口,则退出vimlet Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglistlet Tlist_GainFocus_On_ToggleOpen = 1"打开taglist时,光标保留在taglist窗口let Tlist_Ctags_Cmd='/etc/alternatives/ctags'"设置ctags命令的位置"nnoremap <leader>l : Tlist<CR>map <F3> :TagbarToggle<CR>"关闭和打开taglist窗口的快捷键"}"###########################################################################"NerdTree configuration"{nmap <silent> <F2> :execute 'NERDTreeToggle ' . getcwd()<CR>"}"conf for plugins "{{ 插件相关的配置状态栏的配置 "powerline"{set guifont=PowerlineSymbols\ for\ Powerlineset nocompatibleset t_Co=256let g:Powerline_symbols = 'fancy'"}"###########################################################################"Tagbar configuration"{nmap <F4> :TagbarToggle<CR>   "设置快捷键let g:tagbar_autofocus = 1  let g:tagbar_width = 30       "设置宽度,默认为30"autocmd VimEnter * nested :call tagbar#autoopen(1)    "打开vim时自动打开tagbar"let g:tagbar_left = 1         "在左侧let g:tagbar_right = 1        "在右侧"}"###########################################################################"pydiction 1.2 python auto complete"{filetype plugin onlet g:pydiction_location = '~/.vim/bundle/Pydiction/complete-dict'"let g:pydiction_menu_height == 15"let g:pydiction_menu_height = 20let g:pydoc_cmd = '/usr/bin/pydoc2.4' " debugger keyboard shortcuts  map <F5> :Dbg over<CR>  map <F6> :Dbg into<CR>  map <F7> :Dbg out<CR>  map <F8> :Dbg here<CR>  map <F9> :Dbg break<CR>  map <F10> :Dbg watch<CR>  map <F11> :Dbg down<CR>  map <F12> :Dbg up<CR>"}"###########################################################################syn on                      "语法支持filetype indent on filetype plugin on filetype plugin indent on"}}

Enjoy VIM !