vi编译器插件
来源:互联网 发布:桔城seo伪原创工具 编辑:程序博客网 时间:2024/06/03 12:19
一、vi编辑器的配置文件及目录
需要提到的是,vi编辑器的配置文件主要有两个地方
1. ~/.vimrc #这里以.开头说明这个配置文件是隐藏文件。
2. ~/.vim #这里的.vim是一个文件夹,文件夹也是隐藏的。
.vimrc配置文件是用以配置vim启动时的一些显示,如语法高亮、字体、行号显示....包含的东西比较多,无法一一列出
.vim文件夹中包含的东西则比较丰富,不过最主要的功能还是存放vi插件一些相关的东西(ps:vi比较强大的重要原因之一就是因为其强大而丰富的插件)。
二、我们需要什么样的编辑器?
我们需要一个什么样的编辑器,或者说我们需要什么样的一个IDE(Intergrated Development Environment),让我们先看看Eclipse的界面是如何的:
这个IDE我将其分成5个区域,各个区域的功能如图中所示,功能虽然比较强大,但是文件编辑区则显得比较局促,当文件比较大时,从其中某一行到另一行则需要不停得滑动滚轮或者ctrl+F来查找关键字
而我配置之后的vi编辑器的界面如下:
这个界面大概会有四个部分,左栏上下两个区域分别是文件浏览器和函数变量预览区域,最大的那个部分是文件编辑区,最上面那一长条是多文件标签,的确看起来比Eclipse要清爽了许多,但是功能丝毫没有少。当然如果会有一些附加的功能那就更好了,比如说自动补全,比如说更丰富的颜色高亮,比如说快捷键编译运行等等。
三、.vimrc配置文件
先贴出我的.vimrc文件,不想看的可以直接粘贴到自己的.vimrc文件中,但是这样的话,你就只能使用和我一样的界面了,就没法自己定制自己喜欢的界面了。(不过话说回来有的我也不是很懂)
还有这里先列出的配置文件不包含vim插件的配置(有的vim插件也需要在.vimrc文件中进行相应的配置才能更好的工作)。
- set nocompatible
- if has("syntax")
- syntax on " 语法高亮
- endif
- ""colorscheme molokai " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下
- colorscheme koehler
- " detect file type
- filetype on
- filetype plugin on
- " If using a dark background within the editing area and syntax highlighting
- " turn on this option as well
- "set background=dark
- set guifont=Monaco\ 10
- set guifontwide=文泉驿等宽微米黑\ 10
- " Uncomment the following to have Vim jump to the last position when
- " reopening a file
- if has("autocmd")
- au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
- "have Vim load indentation rules and plugins according to the detected filetype
- filetype plugin indent on
- endif
- " The following are commented out as they cause vim to behave a lot
- " differently from regular Vi. They are highly recommended though.
- "set ignorecase " 搜索模式里忽略大小写
- "set smartcase " 如果搜索模式包含大写字符,不使用 'ignorecase' 选项。只有在输入搜索模式并且打开 'ignorecase' 选项时才会使用。
- set autowrite " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
- set autoindent " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
- "set smartindent " 智能对齐方式
- set tabstop=4 " 设置制表符(tab键)的宽度
- set softtabstop=4 " 设置软制表符的宽度
- set shiftwidth=4 " (自动) 缩进使用的4个空格
- set cindent " 使用 C/C++ 语言的自动缩进方式
- set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s "设置C/C++语言的具体缩进方式
- "set backspace=2 " 设置退格键可用
- set showmatch " 设置匹配模式,显示匹配的括号
- set linebreak " 整词换行
- set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
- "set hidden " Hide buffers when they are abandoned
- set mouse=a " Enable mouse usage (all modes) "使用鼠标
- set number " Enable line number "显示行号
- "set previewwindow " 标识预览窗口
- set history=50 " set command history to 50 "历史记录50条
- "--状态行设置--
- set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
- set ruler " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。
- "--命令行设置--
- set showcmd " 命令行显示输入的命令
- set showmode " 命令行显示vim当前模式
- "--find setting--
- set incsearch " 输入字符串就显示匹配点
- set hlsearch
四、vim常见的插件使用
vim插件我觉得是vim的精华所在,vim很多优秀的功能都是通过vim的插件来实现的。其实vim插件貌似是一套自己的语言,通过这个语言来协同工作,下面我就说我所常用的插件吧~
所有插件都可以在www.vim.org上面下到
4.1 ctags的使用
首先需要说明的是ctags不是vim 的插件,只是一个软件,用它来生成源码的信息--即下面所属的标签索引。
ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形
首先先安装ctags:在终端输入sudo apt-get install ctags即可(PS:博主用的是ubuntu系统),接着就是生成tags文件。进入到对应的源码目录,具体到我,有三个目录分别是/home/helloworld/ns-allinone-2.30/ns-2.30、/usr/include/c++/4.3和/home/helloworld/cpp_src,分别是我经常工作的ns2的目录,C++库的目录以及C++中的STL的目录(貌似没有的话也没什么关系),然后再终端输入ctags -R *即可发现对应的目录下多了个tags文件,如(这里只给出了在ns目录下生成tags文件的例子)
- helloworld@ubuntu:~/ns-allinone-2.30/ns-2.30$ ctags -R *
- helloworld@ubuntu:~/ns-allinone-2.30/ns-2.30$ ls -l tags
- -rw-r--r-- 1 helloworld helloworld 2380816 2013-05-31 17:20 tags
然后在.vimrc中添加以下配置信息:
- "--ctags setting--
- " 按下F5重新生成tag文件,并更新taglist
- map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
- imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
- set tags=tags
- set tags+=./tags "add current directory's generated tags file
- set tags+=/usr/include/c++/4.3/tags
- set tags+=~/ns-allinone-2.30/ns-2.30/tags
- set tags+=~/cpp_src/tags
tag命令用法:
Ctrl+] 跳到当前光标下单词的标签
Ctrl+O 返回上一个标签
Ctrl+T 返回上一个标签
:tag TagName 跳到TagName标签
以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签,可以使用以下命令:
:stag TagName 新窗口显示TagName标签,光标跳到标签处
Ctrl+W + ] 新窗口显示当前光标下单词的标签,光标跳到标签处
当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义),":tags" 命令会跳转到第一处。如果在当前文件中存在匹配,那它将会被首先使用。
可以用这些命令在各匹配的标签间移动:
:tfirst 到第一个匹配
:[count]tprevious 向前 [count] 个匹配
:[count]tnext 向后 [count] 个匹配
:tlast 到最后一个匹配
或者使用以下命令选择要跳转到哪一个
:tselect TagName
输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
:ptag TagName 预览窗口显示TagName标签,光标跳到标签处
Ctrl+W + } 预览窗口显示当前光标下单词的标签,光标跳到标签处
:pclose 关闭预览窗口
:pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用)
:psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。
4.2 vim自动补全——OmniCppComplete
其实我觉得这个挺不好用的。。。不过貌似网上都很推荐这个,先装上吧,后面会有更好用的补全工具。
功能:根据tags文件来进行补全
安装:去www.vim.org中搜索omnicppcomplete可以得到一个zip文件,将这个zip文件放在.vim文件夹下解压即可。
.vimrc配置如下:
- "-- omnicppcomplete setting --
- " 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
- imap <F3> <C-X><C-O>
- " 按下F2根据头文件内关键字补全
- imap <F2> <C-X><C-I>
- set completeopt=menu,menuone " 关掉智能补全时的预览窗口
- let OmniCpp_MayCompleteDot = 1 " autocomplete with .
- let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
- let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
- let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
- let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
- let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
- let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
- let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
- "let OmniCpp_DefaultNamespaces=["std"]
- let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
- let OmniCpp_ShowAccess=1
OmniCppComplete是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来实现自动补全的),所以在ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作。使用下列命令生成tags文件,就可以与OmniCppComplete配合运作:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
--c++-kinds=+p : 为C++文件增加函数原型的标签
--fields=+iaS : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
--extra=+q : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全
所以我们需要用ctags命令加上以上参数后重新在对应的源目录中生成tags文件。
关于omnicppcomplete,以下的来自其他blog(不过我觉得不是很好用)。
Ctrl+P 向前切换成员
Ctrl+N 向后切换成员
Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y 表示退出下拉窗口, 并接受当前选项
Ctrl+X Ctrl+L 整行补全
Ctrl+X Ctrl+N 根据当前文件里关键字补全
Ctrl+X Ctrl+K 根据字典补全
Ctrl+X Ctrl+T 根据同义词字典补全
Ctrl+X Ctrl+I 根据头文件内关键字补全
Ctrl+X Ctrl+] 根据标签补全
Ctrl+X Ctrl+F 补全文件名
Ctrl+X Ctrl+D 补全宏定义
Ctrl+X Ctrl+V 补全vim命令
Ctrl+X Ctrl+U 用户自定义补全方式
Ctrl+X Ctrl+S 拼写建议
:help omnicppcomplete
- "-- Taglist setting --
- let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
- let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
- let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
- let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
- let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
- "是否一直处理tags.1:处理;0:不处理
- let Tlist_Process_File_Always=1 "实时更新tags
- let Tlist_Inc_Winwidth=0
- "-- WinManager setting --
- let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
- "let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
- nmap wm :WMToggle<cr>
文件浏览器命令(在文件浏览器窗口中使用)
<enter>或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
<tab> 如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
<F5> 刷新列表
- 返回上一层目录
c 使浏览目录成为vim当前工作目录
d 创建目录
D 删除当前光标下的目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
r 反向排序列表
x 定制浏览方式, 使用你指定的程序打开该文件
:help winmanager
netrw帮助文档
:help netrw
- " -- MiniBufferExplorer --
- let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
- let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
- let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
- "let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
- let g:miniBufExplModSelTarget = 1 " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
<Shift-Tab> 移到下一个buffer
<Enter> 打开光标所在的buffer
d 删除光标所在的buffer
- "a.vim快捷键设置
- nnoremap <silent> <F12> :A<CR>
- " Disable AutoComplPop.
- let g:acp_enableAtStartup = 0
- " Use neocomplcache.
- let g:neocomplcache_enable_at_startup = 1
- " Use smartcase.
- let g:neocomplcache_enable_smart_case = 1
- " Use camel case completion.
- let g:neocomplcache_enable_camel_case_completion = 1
- " Use underbar completion.
- let g:neocomplcache_enable_underbar_completion = 1
- " Set minimum syntax keyword length.
- let g:neocomplcache_min_syntax_length = 1
- " set the max list in the popup menu. increase the speed
- let g:neocomplcache_max_list=20
- " Define keyword.
- if !exists('g:neocomplcache_keyword_patterns')
- let g:neocomplcache_keyword_patterns = {}
- endif
- let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
- let g:neocomplcache_auto_completion_start_length=1
- " ignore letter case
- let g:neocomplcache_enable_ignore_case=1
这里只需要按下Ctrl+N就可以从下拉框从上往下选,Ctrl+P就可以从上往下选,而且按完Ctrl+N或者Ctrl+P后不需要再次按Enter键直接输入即可。
- "--fold setting--
- set foldmethod=syntax " 用语法高亮来定义折叠
- set foldlevel=100 " 启动vim时不要自动折叠代码
- set foldcolumn=5 " 设置折叠栏宽度
'foldlevel' 是个数值选项:数字越大则打开的折叠更多。
当 'foldlevel' 为 0 时,所有的折叠关闭。
当 'foldlevel' 为正数时,一些折叠关闭。
当 'foldlevel' 很大时,所有的折叠打开。
'foldcolumn' 是个数字,它设定了在窗口的边上表示折叠的栏的宽度。当为0时,没有折叠栏。最大是12。
一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置。
一个关闭的折叠由 '+' 表示。
当折叠栏太窄而不能显示所有折叠时,显示一数字来表示嵌套的级别。
在折叠栏点击鼠标,可以打开和关闭折叠:
- 点击 '+' 打开在这行的关闭折叠
- 在任何其他非空字符上点击,关闭这行上的打开折叠
zA 循环地打开/关闭光标下的折叠
zo 打开 (open) 在光标下的折叠
zO 循环打开 (Open) 光标下的折叠
zc 关闭 (close) 在光标下的折叠
zC 循环关闭 (Close) 在光标下的所有折叠
zM 关闭所有折叠
zR 打开所有的折叠
:help usr_28.txt
:help fold.txt
- "括号自动补全
- :inoremap ( ()<ESC>i
- :inoremap ) <c-r>=ClosePair(')')<CR>
- :inoremap { {<CR>}<ESC>O
- :inoremap } <c-r>=ClosePair('}')<CR>
- :inoremap [ []<ESC>i
- :inoremap ] <c-r>=ClosePair(']')<CR>
- :inoremap " ""<ESC>i
- :inoremap ' ''<ESC>i
- function ClosePair(char)
- if getline('.')[col('.') - 1] == a:char
- return "/<Right>"
- else
- return a:char
- endif
- endfunction
- vi编译器插件
- vi编译器
- vi编译器
- vi编译器
- vi编译器里多行删除
- vi编译器问题
- vi编译器的使用
- vi 编译器用法总结
- vi编译器的设置
- vi编译器的使用
- vi编译器的学习
- Linux VI编译器基本使用
- Linux系统vi编译器使用指南
- Linux 中VI VIM 编译器
- eclipse反编译器插件
- Sublime 编译器-安装插件
- eclipse中vi插件
- VI--插件的使用
- 使用ffmpeg.exe进行转码参数说明
- POJ-3278 Catch That Cow
- [LeetCode] Binary Tree Zigzag Level Order Traversal
- OpenSSL “心脏滴血”漏洞
- uva 动态规划 437 The Tower of Babylon
- vi编译器插件
- Python安装
- C++数组
- uva 705
- Struts2零配置
- 前端后台学习
- 关于网站sql注入解决方案
- JAVA捕获异常与抛出异常
- Win10开发:数据绑定