Ubuntu下VIM的安装及其配置——Linux篇
2017-04-22 22:47
309 查看
一、Ubuntu系统默认内置:
实际上ubuntu默认没有安装老版本的vi,只装了vim。vi是vim.tiny(vim的最小化版本,不含 GUI,并且仅含有一小部分功能,并且默认与vi兼容。此软件包不依赖于vim-runtime软件包)的一个别名,可用命令ls
-l /usr/bin/vi来进行查看vi是指向/etc/alternatives/vi,而/etc/alternatives/vi 又指向/usr/bin/vim.tiny,从命令update-alternatives --display vi可以看出默认情况下,vi当前指向的是vim.tiny。
二、VIM版本及其对比:
不同的编译选项编译出来的vim而已。比如vim是终端下的vim-basic跟vim-tiny,而vim-gnome是用了GNOME2 GUI的vim,在gnome桌面系统上推荐安装vim-gnome。
1、vim-tiny是tiny 版本的vim,就是功能比较少(前面有个+的表示有着功能),但是体积小,速度快。
2、vim-basic:完整版的vim,不过同样没有图形界面,没有菜单
3、更多可以查看帮助文档:http://vimdoc.sourceforge.net/htmldoc/various.html#+feature-list
三、VIM安装:
默认已经安装了VIM-tiny,
下面我们以Ubuntu14.04(Unity)安装完整版VIM(VIM-basic)为例:
在终端输入以下命令,则会自动安装:
安装完成后,发现系统会自动把默认的vi版本从tiny改成basic版本:
此时vim-basic已经安装完毕
现在系统有两个版本的VIM,可以如下命令查看:
下面我们以Ubuntu14.04(Gnome3桌面)安装完整版VIM(VIM-gnome)为例:
自动安装完之后,可以使用以下命令进行查看:
已经添加到系统
查看版本
四、VIM配置:
注:只对各个用户在自己的当前目录下的.vimrc修改的话,修改内容只对本用户有效,要想全部有效,可以修改/etc/vim/vimrc.
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。
启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:$vi ~/.vimrc
设置完后 :x或者:x或者wq 进行保存退出即可。
下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:
行号的显示与隐藏[3]:
启用Modeline(即允许被编辑的文件以注释的形式设置Vim选项,详见Vim
Wiki: Modeline magic)[4]:
如果终端使用的是深色背景:
Vundle 的配置更灵活, pathogen 则相对简洁。二者都能很好地与Git结合,安装插件十分方便。
如果你使用 Git 管理你的配置文件,那么还可以将 Pathogen 或 Vundle 与 Git 的 Submodule 功能管理插件结合[5],使得在多台电脑间同步插件及在本地更新插件变得十分便捷。
插件管理工具无需通过系统的包管理系统安装,只要将需要的文件放在 ~/.vim/ 目录中即可。这样,一套配置文件也可以方便地用在多个不同的系统环境中。
关键字补全即简单地补全到文档中已有的词,快捷键为 Ctrl-N 或 Ctrl-P。智能补全Vim 7中引入 Omni Complete,可根据语义补全,快捷键为 Ctrl-X Ctrl-O。Vim的补全菜单操作方式与一般IDE的方式不同,可加入如下设置[7]:
如需自动补全,可安装AutoComplPop插件,安装后如需在补全是显示文档(预览),可加入设置:
常见的注释管理插件为The
NERD Commenter,默认支持多种语言,使用方法也很简单:只需在可视(V)模式中选择一段代码,按下\cc加逐行注释,\cu取消注释,\cm添加块注释。
如有其它需求,也可考虑comments、EnhCommentify等插件。
在不同的模式中调整缩进的方法不同:
插入模式Ctrl-T增加缩进,Ctrl-D减小缩进。命令模式>> 右缩进, << 左缩进,注意n<< 或 n>>是缩进多行,如4>>可视模式< 、 > 用于左右缩进, n< 、 n> 可做多节缩进,如 2> 。另外,= 可对选中的部分进行自动缩进;]p可以实现p的粘贴功能,并自动缩进。
跳转到定义gd到局部变量的定义,gD到全局变量的定义搜索*, # 可对光标处的词向前/向后做全词搜索,g*, g# 做相对应的非全词匹配搜索代码块首尾[[, ]] 可跳到当前代码块起始或结束的大括号处。括号首尾% 可在配对的括号、块首尾之前跳转。位置历史Ctrl-O 在历史记录中后台,Ctrl-I 则为前进。
即可生成一个描述代码结构的tags文件。
提示:
ctags的功能很强大,更详细的配置请参考其文档。
建议在~/.vimrc中添加如下配置以使Vim在父目录中寻找tags文件[10]:
设置好后,可在Vim中使用如下功能:Ctrl-]转至最佳匹配的相应Tag,Ctrl-T返回上一个匹配。如果有多个匹配,g
Ctrl-]可显示所有备选的tags。如有需要,可互换Ctrl-]和g Ctrl-] [11]:
常用的命令有:cw[indow](如有错误打开quickfix窗口)、:cn(跳到下一个错误)、:cp(跳到前一个错误)等,具体可:help
quickfix。
如果想在有错时自动打开quickfix窗口[12]:
默认情况下,:mak[e]会跳转到第一个错误,如果不想启用这个功能,请使用:make!。
随后即可使用z系列命令管理代码折叠。如za会翻转当前位置的折叠状态,zA会递归翻转当前层所有代码的折叠状态等。当然也可以把功能键映射到za:
Fugitive让 Vim 更好地与 Git 整合。Powerline炫丽实用的状态栏Tagbar比 taglist 更现代的代码结构浏览工具The NERD tree以树形结构浏览文件夹中的文件Syntastic语法检查surround.vim快速删除/修改光标周围配对的括号其它常用插件[14]:
Project方便管理工程中的文件snipmate.vim在编辑中实现模板展开a.vim在.cpp/.h等文件对中跳转matchit.zip增强%的功能winmanager将文件管理窗口和taglist堆叠起来。
让vim自动判断中文编码
to setup VIM properly for editing Python files - *.py (StackOverflow)
↑ amix的vimrc
↑ Python
and vim: Make your own IDE (2009.2)
↑ Python官网上的Vim介绍
↑ Git
Tools - Submodules
↑ 细说
Vim 7 之新特性-LinuxToy
↑ VimTip
1228: Improve completion popup menu
↑ Vim文档
↑ Browsing
programs with tags -- Vim Tips Wiki
↑ Vim
and Ctags tips and tricks
↑ use :tjump
instead of :tag vim on pressing ctrl-] (StackOverflow)
↑ Automatically
open the quickfix window on :make
↑ LinuxTOY
Xu Xiaodong 的VimEnv
↑ 手把手教你把Vim改装成一个IDE编程环境(图文)
分类: _Linux,*安装、使用指导区
实际上ubuntu默认没有安装老版本的vi,只装了vim。vi是vim.tiny(vim的最小化版本,不含 GUI,并且仅含有一小部分功能,并且默认与vi兼容。此软件包不依赖于vim-runtime软件包)的一个别名,可用命令ls
-l /usr/bin/vi来进行查看vi是指向/etc/alternatives/vi,而/etc/alternatives/vi 又指向/usr/bin/vim.tiny,从命令update-alternatives --display vi可以看出默认情况下,vi当前指向的是vim.tiny。
二、VIM版本及其对比:
不同的编译选项编译出来的vim而已。比如vim是终端下的vim-basic跟vim-tiny,而vim-gnome是用了GNOME2 GUI的vim,在gnome桌面系统上推荐安装vim-gnome。
1、vim-tiny是tiny 版本的vim,就是功能比较少(前面有个+的表示有着功能),但是体积小,速度快。
2、vim-basic:完整版的vim,不过同样没有图形界面,没有菜单
3、更多可以查看帮助文档:http://vimdoc.sourceforge.net/htmldoc/various.html#+feature-list
三、VIM安装:
默认已经安装了VIM-tiny,
下面我们以Ubuntu14.04(Unity)安装完整版VIM(VIM-basic)为例:
在终端输入以下命令,则会自动安装:
sudo apt-get install vim-basic
安装完成后,发现系统会自动把默认的vi版本从tiny改成basic版本:
此时vim-basic已经安装完毕
现在系统有两个版本的VIM,可以如下命令查看:
下面我们以Ubuntu14.04(Gnome3桌面)安装完整版VIM(VIM-gnome)为例:
自动安装完之后,可以使用以下命令进行查看:
已经添加到系统
查看版本
四、VIM配置:
注:只对各个用户在自己的当前目录下的.vimrc修改的话,修改内容只对本用户有效,要想全部有效,可以修改/etc/vim/vimrc.
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号、语法高亮度显示、智能缩进等功能的。为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc。
启动vim时,当前用户根目录下的.vimrc文件会被自动读取,该文件可以包含一些设置甚至脚本,所以,一般情况下把.vimrc文件创建在当前用户的根目录下比较方便,即创建的命令为:$vi ~/.vimrc
设置完后 :x或者:x或者wq 进行保存退出即可。
下面给出一个例子,其中列出了经常用到的设置,详细的设置信息请参照参考资料:
配置
基本配置[1] [2]:"开启语法高亮 syntax on "依文件类型设置自动缩进 filetype indent plugin on "显示当前的行号列号: set ruler "在状态栏显示正在输入的命令 set showcmd "关闭/打开配对括号高亮 "NoMatchParen DoMatchParen
行号的显示与隐藏[3]:
"显示行号: set number "为方便复制,用<F2>开启/关闭行号显示: nnoremap <F2> :set nonumber!<CR>:set foldcolumn=0<CR>
启用Modeline(即允许被编辑的文件以注释的形式设置Vim选项,详见Vim
Wiki: Modeline magic)[4]:
set modeline
如果终端使用的是深色背景:
"为深色背景调整配色 set background=dark
插件管理
下文的配置很多都依赖于第三方开发的 Vim 插件。为了方便地安装和维护这些插件,推荐先安装一种插件管理工具,目前较为流行的是 Vundle 和 pathogen。二者功能类似,但Vundle 的配置更灵活, pathogen 则相对简洁。二者都能很好地与Git结合,安装插件十分方便。
如果你使用 Git 管理你的配置文件,那么还可以将 Pathogen 或 Vundle 与 Git 的 Submodule 功能管理插件结合[5],使得在多台电脑间同步插件及在本地更新插件变得十分便捷。
# 在存放配置文件的主文件夹下,添加一个 submodule git submodule add https://github.com/gmarik/vundle.git .vim/bundle/vundle # 用类似的办法添加多个插件后,以后升级插件只需: git submodule update # 如果其它电脑 checkout 出配置文件后,要先: git submodule init
插件管理工具无需通过系统的包管理系统安装,只要将需要的文件放在 ~/.vim/ 目录中即可。这样,一套配置文件也可以方便地用在多个不同的系统环境中。
代码补全
Vim 7已经内置了代码补全功能[6],补全操作可分为两种:关键字补全即简单地补全到文档中已有的词,快捷键为 Ctrl-N 或 Ctrl-P。智能补全Vim 7中引入 Omni Complete,可根据语义补全,快捷键为 Ctrl-X Ctrl-O。Vim的补全菜单操作方式与一般IDE的方式不同,可加入如下设置[7]:
"让Vim的补全菜单行为与一般IDE一致(参考VimTip1228) set completeopt+=longest "离开插入模式后自动关闭预览窗口 autocmd InsertLeave * if pumvisible() == 0|pclose|endif "回车即选中当前项 inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "上下左右键的行为 inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>" inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>" inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>" inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
如需自动补全,可安装AutoComplPop插件,安装后如需在补全是显示文档(预览),可加入设置:
let g:acp_completeoptPreview = 1
注释管理
经常要将一段代码注释掉或取消注释,而尤其对于某些只支持单行注释的语言来说,逐行加注释很麻烦,这时快速注释(或取消注释)代码的插件就显得很有用了。常见的注释管理插件为The
NERD Commenter,默认支持多种语言,使用方法也很简单:只需在可视(V)模式中选择一段代码,按下\cc加逐行注释,\cu取消注释,\cm添加块注释。
如有其它需求,也可考虑comments、EnhCommentify等插件。
缩进
使用自动缩进可能需要设置,vim中对自动缩进的详细设置办法见Vim代码缩进设置。在不同的模式中调整缩进的方法不同:
插入模式Ctrl-T增加缩进,Ctrl-D减小缩进。命令模式>> 右缩进, << 左缩进,注意n<< 或 n>>是缩进多行,如4>>可视模式< 、 > 用于左右缩进, n< 、 n> 可做多节缩进,如 2> 。另外,= 可对选中的部分进行自动缩进;]p可以实现p的粘贴功能,并自动缩进。
代码浏览与跳转
代码跳转类似于IDE中的Ctrl+点击功能。与代码补全类似,代码浏览工具亦可分为基于文本分析的和基于代码理解的两类。简单代码跳转
在命令模式下可直接使用下述指令:[8]跳转到定义gd到局部变量的定义,gD到全局变量的定义搜索*, # 可对光标处的词向前/向后做全词搜索,g*, g# 做相对应的非全词匹配搜索代码块首尾[[, ]] 可跳到当前代码块起始或结束的大括号处。括号首尾% 可在配对的括号、块首尾之前跳转。位置历史Ctrl-O 在历史记录中后台,Ctrl-I 则为前进。
基于代码理解的跳转
该功能依赖于ctags工具。[9]安装好ctags后,在存放代码的文件夹运行ctags -R .
即可生成一个描述代码结构的tags文件。
提示:
ctags的功能很强大,更详细的配置请参考其文档。
建议在~/.vimrc中添加如下配置以使Vim在父目录中寻找tags文件[10]:
set tags=tags;/
设置好后,可在Vim中使用如下功能:Ctrl-]转至最佳匹配的相应Tag,Ctrl-T返回上一个匹配。如果有多个匹配,g
Ctrl-]可显示所有备选的tags。如有需要,可互换Ctrl-]和g Ctrl-] [11]:
"在普通和可视模式中,将<c-]>与g<c-]>互换 nnoremap <c-]> g<c-]> vnoremap <c-]> g<c-]> nnoremap g<c-]> <c-]> vnoremap g<c-]> <c-]>
就地编译和错误处理
使用:make可调用make命令编译程序,配合Vim内置的QuickFix功能,可以像IDE一样打开一个窗口展示编译错误和警告,通过它还可以方便地跳转到各编译错误的产生位置。常用的命令有:cw[indow](如有错误打开quickfix窗口)、:cn(跳到下一个错误)、:cp(跳到前一个错误)等,具体可:help
quickfix。
如果想在有错时自动打开quickfix窗口[12]:
" 编译后,如有错误则打开quickfix窗口。(光标仍停留在源码窗口) " " 注意:需要开启netsting autocmd autocmd QuickFixCmdPost [^l]* nested cwindow autocmd QuickFixCmdPost l* nested lwindow
默认情况下,:mak[e]会跳转到第一个错误,如果不想启用这个功能,请使用:make!。
代码折叠
代码较长时可启用代码折叠功能,如按语法高亮元素折叠:set foldmethod=syntax "默认情况下不折叠 set foldlevel=99
随后即可使用z系列命令管理代码折叠。如za会翻转当前位置的折叠状态,zA会递归翻转当前层所有代码的折叠状态等。当然也可以把功能键映射到za:
map <F3> za
查看文档
K 键可用于查看当前函数的文档。其它插件
近来仍被积极维护的代码托管在 GitHub 上的插件[13]:Fugitive让 Vim 更好地与 Git 整合。Powerline炫丽实用的状态栏Tagbar比 taglist 更现代的代码结构浏览工具The NERD tree以树形结构浏览文件夹中的文件Syntastic语法检查surround.vim快速删除/修改光标周围配对的括号其它常用插件[14]:
Project方便管理工程中的文件snipmate.vim在编辑中实现模板展开a.vim在.cpp/.h等文件对中跳转matchit.zip增强%的功能winmanager将文件管理窗口和taglist堆叠起来。
相关文档
配置基于Vim的Python编程环境让vim自动判断中文编码
参考资料
↑ Howto setup VIM properly for editing Python files - *.py (StackOverflow)
↑ amix的vimrc
↑ Python
and vim: Make your own IDE (2009.2)
↑ Python官网上的Vim介绍
↑ Git
Tools - Submodules
↑ 细说
Vim 7 之新特性-LinuxToy
↑ VimTip
1228: Improve completion popup menu
↑ Vim文档
↑ Browsing
programs with tags -- Vim Tips Wiki
↑ Vim
and Ctags tips and tricks
↑ use :tjump
instead of :tag vim on pressing ctrl-] (StackOverflow)
↑ Automatically
open the quickfix window on :make
↑ LinuxTOY
Xu Xiaodong 的VimEnv
↑ 手把手教你把Vim改装成一个IDE编程环境(图文)
分类: _Linux,*安装、使用指导区
相关文章推荐
- Ubuntu下VIM的安装及其配置——Linux篇
- Ubuntu 12.04安装vim和配置
- 安装Ubuntu nginx及其配置安装Php
- Ubuntu下 git 与 vim 的安装与简单的配置
- Linux(Ubuntu)下 vim/gvim/vimgdb 源码编译安装与配置(未完待续)
- 在ubuntu上搭建开发环境6---安装和使用vim及其插件(Pathogen和NERDTree)
- Ubuntu安装vim,vim配置文件
- Ubuntu10.10、11.04安装Java+Eclipse及其配置
- ubuntu下安装与配置VIM
- Ubuntu中安装Git及其相关的配置
- ubuntu安装SCIM输入法及其配置
- Ubuntu 10.10&11.04安装Java+Eclipse及其配置
- Ubuntu安装hadoop及其配置
- Ubuntu 12.04安装vim和配置(超强vim,要的就是这个)
- ubuntu 安装 OpenCv 及其Qt的开发环境配置
- Ubuntu 12.04安装vim和配置
- ubuntu下jdk1.7.0安装及其环境配置总结(带图示)
- ubuntu下编译安装Larbin及其简单配置
- Ubuntu 12.04安装vim和配置
- Ubuntu下如何安装NFS服务及其配置