常用命令:

[0]安装vim:

  oee@copener:~$ sudo apt-get install vim vim-scripts vim-doc

  刚安装完$HOME目录下只有两个文件:.vim/ .viminfo ;其中“.vim/”目录是空的“.viminfo”是记录vim的一些信息

  

  vim的配置分为两部分:一部分是$HOME/.vimrc的配置项,另外一部分是插件的安装.插件安装在$HOME/.vim/plugin/*.vim下,$HOME/.vim/doc/*.txt是相应的帮助文档.

  插件安装完之后还是需要在.vimrc里面进行配置的.插件请自行下载放入相应的$HOME/.vim/plugin/目录即可.

[1]学习小教程:

  oee@copener:~$ vimtutor

  vim编辑器的三种模式:一般模式、编辑模式和命令行模式。

[2]帮助文档:

  oee@copener:~$vim

  vim命令状态下输入下面命令可查看帮助文档

    :help

[3]配置vim

  $HOME目录下面若没有.vimrc文件的话可以新建一个,然后在里面进行配置。网上有很多配置文件,可以下载一个自己喜欢的风格进行个性化定制。

  定制过程中应该还要安装一些插件。

  安装vim配置文件

  oee@copener:~$ git clone git://github.com/ma6174/vim.git

  安装bundle插件

  oee@copener:~$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

  打开vim并执行下面命令安装插件

  :BundleInstall

  结束时有个错误,这是正常的,因为ycm需要手工编译出库文件  

 Done! With errors; press l to view log
 ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; you need
 to compile YCM before using it. Read the docs!

  到 .vim/bundle/YouCompleteMe 下运行

  ./install.sh --clang-completer

  提示报错

  git submodule update --init --recursive

  再次提示报错,缺少库文件 

   STDERR:
 Your C++ compiler supports C++, compiling in that mode.
 CMake Error at /usr/share/cmake- (message):
   Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
   (Required is at least version "2.6")
 Call Stack (most recent call first):
   /usr/share/cmake- (_FPHSA_FAILURE_MESSAGE)
   /usr/share/cmake- (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
   BoostParts/CMakeLists.txt: (find_package)

安装缺失文件

oee@copener:~/.vim/bundle/YouCompleteMe$ sudo apt-get install python-dev

成功后再次运行

./install.sh --clang-completer

OK了

我的.vimrc配置文件下载

 "********************************************************
 "vim configuration of copener
 "Created by copener 2015年 05月 11日 星期一 14:30:51 HKT
 "********************************************************
 "                   一般性配置                          *
 "********************************************************

 "关闭vim一致性原则
 set nocompatible

 "显示行号
 set number

 "设置在编辑过程中右下角显示光标的行列信息
 set ruler

 "在状态栏显示正在输入的命令
 set showcmd

 "设置历史记录条数
 set history=

 "设置取消备份 禁止临时文件的生成
 set nobackup
 set noswapfile

 "设置匹配模式
 "set showmatch

 "设置C/C++方式自动对齐
 set autoindent
 set cindent

 "开启语法高亮功能
 syntax enable
 syntax on

 "指定配色方案为256色
 set t_Co=

 "设置搜索时忽略大小写
 set ignorecase

 "配置backspace的工作方式
 set backspace=indent,eol,start

 "设置在vim中可以使用鼠标
 set mouse=a

 "设置tab宽度
 set tabstop=

 "设置自动对齐空格数
 set shiftwidth=

 "设置退格键时可以删除4个空格
 set smarttab
 set softtabstop=

 "将tab键自动转换为空格
 set expandtab

 "设置编码方式
 set encoding=utf-

 "自动判断编码时 依次尝试以下编码
 set fileencodings=ucs-bom,utf-,cp936,gb18030,big5,euc-jp,euc-kr,latin1

 "检测文件类型
 filetype on

 "针对不同的文件采取不同的缩进方式
 filetype indent on

 "允许插件
 filetype plugin on

 "启动智能补全
 filetype plugin indent on

 "座标显示定位
 set cul             "高亮光标所在行
 "set cuc             "高亮光标所在列
 autocmd InsertLeave * se nocul  "用浅色高亮当前行
 autocmd InsertEnter * se cul    "用浅色高亮当前行
 if has("autocmd")
     au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
     au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"
     au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
 endif

 "*********************************************************
 "                  vundle 配置                           *
 "*********************************************************

 set rtp+=~/.vim/bundle/vundle/
 call vundle#rc()

 " let Vundle manage Vundle
 Bundle 'gmarik/vundle'

 " My Bundles here:

 Bundle 'tpope/vim-fugitive'
 Bundle 'Lokaltog/vim-easymotion'
 Bundle 'rstacruz/sparkup', {'rtp': 'vim/'}
 Bundle 'tpope/vim-rails.git'
 Bundle 'taglist.vim'
 Bundle 'The-NERD-tree'
 Bundle 'Syntastic'
 Bundle 'L9'
 Bundle 'FuzzyFinder'
 Bundle 'Lokaltog/vim-powerline'
 Bundle 'Valloric/YouCompleteMe' 

 "*****************************************************
 "                   taglist配置                      *
 "*****************************************************

 "不显示"press F1 to display help"
 let Tlist_Compact_Format=

 "窗口在左侧显示
 let Tlist_Use_Right_Window=

 "只显示当前文件的tags
 let Tlist_Show_One_File=  

 "高亮显示
 let Tlist_Auto_Highlight_tag=

 "随文件自动更新
 let Tlist_Auto_Update=

 "设置宽度
 let Tlist_WinWidth=       

 "taglist窗口是最后一个窗口,则退出vim
 let Tlist_Exit_OnlyWindow= 

 "单击跳转
 let Tlist_Use_SingClick=

 "打开关闭快捷键
 nnoremap <silent> <F8> :TlistToggle<CR>

 "********************************************************
 "                      NERD_Tree 配置                   *
 "********************************************************

 "显示增强
 let NERDChristmasTree=

 "自动调整焦点
 let NERDTreeAutoCenter=

 "鼠标模式:目录单击,文件双击
 let NERDTreeMouseMode=

 "打开文件后自动关闭
 let NERDTreeQuitOnOpen=

 "显示文件
 let NERDTreeShowFiles=

 "显示隐藏文件
 let NERDTreeShowHidden=

 "高亮显示当前文件或目录
 let NERDTreeHightCursorline=

 "显示行号
 let NERDTreeShowLineNumbers=

 "窗口位置
 let NERDTreeWinPos='left'

 "窗口宽度
 let NERDTreeWinSize=

 "不显示'Bookmarks' label 'Press ? for help'
 let NERDTreeMinimalUI=

 "快捷键
 nnoremap <silent> <F4> :NERDTreeToggle<CR>

 "*****************************************************
 "           YouCompleteMe配置                        *
 "*****************************************************

 "leader映射为逗号“,”
 let mapleader = ","  

 "配置默认的ycm_extra_conf.py
 let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py' 

 "按,jd 会跳转到定义
 nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>   

 "打开vim时不再询问是否加载ycm_extra_conf.py配置
 let g:ycm_confirm_extra_conf=   

 "使用ctags生成的tags文件
 let g:ycm_collect_identifiers_from_tag_files =  

 "*****************************************************
 "           Syntastic配置                            *
 "*****************************************************

 let g:Syntastic_check_on_open=

 "打开文件类型检测, 加了这句才可以用智能补全
 "set completeopt=longest,menu

 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 """""新文件标题
 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 "新建.c,.h,.sh,.java文件,自动插入文件头
 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
 "新建文件后,自动定位到文件末尾
 autocmd BufNewFile * normal G
 ""定义函数SetTitle,自动插入文件头
 func SetTitle()
     if &filetype == 'sh'    "如果文件类型为.sh文件
         call setline(,"\#########################################################################")
         call append(line("."), "\# File Name: ".expand("%"))
         call append(line(, "\# Author: copener")
         call append(line(, "\# mail: hanmingye@foxmail.com")
         call append(line(, "\# Created Time: ".strftime("%c"))
         call append(line(, "\#########################################################################")
         call append(line(, "\#!/bin/bash")
         call append(line(, "")
     else
         call setline(, "/*************************************************************************")
         call append(line("."), "    > File Name: ".expand("%"))
         call append(line(, "    > Author: copener")
         call append(line(, "    > Mail: hanmingye@foxmail.com")
         call append(line(, "    > Created Time: ".strftime("%c"))
         call append(line(, " ************************************************************************/")
         call append(line(, "")
     endif
     if &filetype == 'c'
         call append(line(, "#include<stdio.h>")
         call append(line(, "")
     endif

     if &filetype == 'cpp'
         call append(line(, "#include<iostream>")
         call append(line(, "using namespace std;")
         call append(line(, "")
     endif

     if &filetype == 'java'
         call append(line(,"public class ".expand("%:r"))
         call append(line(,"")
     endif

     if expand("%:e") == 'h'
         call append(line(, "#ifndef _".toupper(expand("%:r"))."_H")
         call append(line(, "#define _".toupper(expand("%:r"))."_H")
         call append(line(, "#endif")
         call append(line(, "")
     endif
     endif
 endfunc 

效果图:

map :!ctags --tag-relative=yes -f /pathto/tags -R *<CR>

后期追加内容:

  ctags :用来遍历源代码文件生成tags文件,tags文件能被编辑器或其它工具用来快速查找定位源代码中的符号(tag/symbol),如变量名,函数名等。tags文件是Taglist和OmniCppComplete工作的基础。

 安装:$sudo apt-get install ctags      安装完就可以被Taglist插件调用了  $sudo ctags -f $HOME/tags -R  指定生成文件目录和文件名, -R递归目录

  taglist:用于显示代码符号的窗口,代码符号由tags生成的tag(即标签)

     安装:$sudo vim-addons install taglist    taglist依赖于ctags,其它插件的安装也可以用这个方法.

     在.vimrc文件中添加  map <F6> :!ctags -R *<CR>  可以实现F6快捷键更新当前目录的tags符号文件给taglist插件用.

  bufexplorer:用于显示buf列表

     

  Nerd_Tree:用于文件浏览

  winmanager:用于界面管理

感谢零度王爵的分享:C编程vim初步配置

感谢小码哥的分享:强大的vim配置文件,让编程更随意

[感谢所有让我进步的人]

install vim的更多相关文章

  1. How to install vim on linux

    前几日了解到 vim 文本编辑器,据说很强大,使用起来效率很高,今天怀着很好奇的心理,学习了一下vim编辑器的下载安装方法,在此详细介绍一下安装vim编辑器的几种常用方法: 第一种方法就是在 Ubun ...

  2. Ubuntu下sudo apt-get install vim 失败的解决办法

    Ubuntu下 执行命令:sudo apt-get install vim 失败 解决办法: 更新一下,命令:sudo apt-get update 再安装即可成功:sudo apt-get inst ...

  3. dockerfile---apt-get install vim 时 Unable to locate package vim

    在学习 dockerfile 的时候,发现编写的 Dockerfile 中的 apt-get install 命令无法找到要安装的包,所以记录一下这次发生的错误. 环境:宿主机:windows 10 ...

  4. 【在下版本,有何贵干?】Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirrorlist

    隐秘的版本问题---- Dockerfile中 RUN yum -y install vim失败Cannot prepare internal mirrorlist: No URLs in mirro ...

  5. Centos7 yum install vim 出现“could not retrieve mirrorlist”

    ps:来源 https://www.cnblogs.com/justphp/p/5959655.html 办法一:改dns解析 vim /etc/resolv.conf 添加: nameserver ...

  6. ubuntu 14.04 vim install youcompleteme

    sudo apt-get install vim ; sudo apt-get install vim-youcompleteme ; sudo apt-get install vim-addon-m ...

  7. ubuntu apt-get install 时报错curl : Depends: libcurl4 (= 7.58.0-2ubuntu3.6) but 7.61.0-1ubuntu2 is to be installed或者 vim : Depends: vim-common (= 2:8.0.1453-1ubuntu1) but 2:8.0.1766-1ubuntu1 is to be ins

    ubuntu apt-get install 时报错:Depends: ***(=某版本)but***(另一版本)is to be installed 这时候就把这个***给purge后再重新装就好了 ...

  8. 在 Linux 打造属于自己的 Vim

    Linux 系统中很多东西都是以脚本代码.配置文件的形式存在,使用 Linux 系统时,需经常对这些文件进行编辑.很显然,如果没有文本编辑器,江湖之路寸步难行. 我的选择是 Vim.Vim 是 Lin ...

  9. 让VIM支持Python2 by update-alternatives

    前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...

随机推荐

  1. JavaScript中style, currentStyle和 getComputedStyle的异同

    今天在做项目的时候,习惯性的用到了element.style.width,然而浏览器却报错,错误提示是style is undefined,这是我才意识到,内联样式表和外联样式表在js应用中也有很大的 ...

  2. 扩展django的User的部分方法

    这做项目时发现django自带的User中的字段不够用,默认的auth_user表总共只有11个字段,如果需要更多的字段该怎么办,在网上搜了一下,有这么几种方法. 1. 直接修改django 源码,修 ...

  3. 2014优秀的好用的20款免费jQuery插件推荐

    2013 年最好的 20 款免费 jQuery 插件,世界买家网 www.buyerinfo.biz在这里分享给大家 这些插件对设计者和开发者都有很大的帮助,希望大家能够喜欢:) 现 今互联网市场上提 ...

  4. DOM4J的使用

    http://blog.csdn.net/redarmy_chen/article/details/12969219 http://blog.csdn.net/wlbing0625/article/d ...

  5. sql server数据库连接问题处理

    下面请一字一句地看,一遍就设置成功,比你设置几十遍失败,费时会少得多. 首先,在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份验证方 ...

  6. IOS导航栏颜色渐变与常用属性

    (转:http://www.cnblogs.com/Lingchen-start/archive/2015/10/23/4904361.html) 今年很忙,忙的写日志的时间都很少.  少的可怜. 自 ...

  7. 移动混合开发之文件管理Final之总结

    从昨天开始:2016年7月日,早晨用时1+2个小时左右,最开始还怀疑自己能否解决,但是最终还是自己解决, 所以下次遇到问题,最好还是尽量尝试自己解决. 1.css在设计的时候,一定要把父元素的长宽高指 ...

  8. 最小系统加载工具 systemjs

    systemjs 是一个最小系统加载工具,用来创建插件来处理可替代的场景加载过程,包括加载 CSS 场景和图片,主要运行在浏览器和 NodeJS 中.它是 ES6 浏览器加载程序的的扩展,将应用在本地 ...

  9. UML学习---交互

    在系统中,对象都不是孤立存在的,它们相互之间通过传递消息进行交互.交互是一种行为,由语境中的一组对象为达到某一目的而交换的一组消息构成.

  10. 面向对象to1

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...