
常用命令:
[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了
"******************************************************** "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配置文件,让编程更随意
[感谢所有让我进步的人]