您的位置:首页 > 其它

Ubuntu14.04 下将vim设置为IDE模式

2014-10-09 20:41 246 查看
操作系统:Ubuntu Desktop 14.04

参考:一步步将vim改造成C/C++开发环境(IDE)

原文地址http://blog168.chinaunix.net/space.php?uid=23089249&do=blog&id=2855999

1、安装Vim和基本插件

首先安装好Vim和Vim的基本插件。这些使用apt-get安装即可:

$sudo apt-get install vim vim-scripts vim-doc

其中vim-scripts是vim的一些基本插件,包括语法高亮的支持、缩进等等。

2、Vim配置文件

Vim强大的功能,其来源基本上就两个地方:Vim插件以及Vim配置文件。

Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user(其中,user为用户名,我的用户名是lingd)下建立自己的配置文件。进入用户文件夹(/home/user/)之后,用gedit新建一个名叫.vimrc的文件:

$ gedit .vimrc

注:使用gedit主要是为了方便大段大段的文字粘贴!

然后把下面的文字拷贝进这个文件之后保存:

" This line should not be removed as it ensures that various options are

" properly set to work with the Vim-related packages available in Debian.

debian.vim

" Uncomment the next line to make Vim more Vi-compatible

" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes
numerous

" options, so any other options should be set AFTER setting 'compatible'.

set nocompatible

" Vim5 and later versions support syntax highlighting. Uncommenting the

" following enables syntax highlighting by default.

if has("syntax")

syntax on " 语法高亮

endif

colorscheme ron " elflord ron peachpuff default 设置配色方案,vim自带的配色方案保存在/usr/share/vim/vim72/colors目录下

" 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

" 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

注:配置文件中,以单个双引号开头的文字为注释。

在Ubuntu14.04下注意需要将第三行注释掉!!!不然无法启动vim,配置完成后,可以看到的明显变化是出现了“行数”

3、管理vim插件——vim-addons

通过vim-addons,我们可以管理vim插件。我们在sudo apt-get install vim vim-scripts vim-doc时,一般会自动安装上vim-addons。若未安装可通过sudo apt-get install vim-addon-manager手动安装。安装完成后,就可以用vim-addons管理vim插件了。

# 系统中已有的vim-scripts中包含的插件及其状态:

$ vim-addons status

# Name User Status System Status

align removed removed

alternate removed removed

bufexplorer removed removed

calendar removed removed

closetag removed removed

colors sampler pack removed removed

cvsmenu removed removed

debPlugin removed removed

detectindent removed removed

doxygen-toolkit removed removed

editexisting removed removed

enhanced-commentify removed removed

gnupg removed removed

info removed removed

justify removed removed

lbdbq removed removed

markdown-syntax removed removed

matchit removed removed

minibufexplorer installed removed

nerd-commenter removed removed

omnicppcomplete installed removed

po removed removed

project installed removed

python-indent removed removed

secure-modelines removed removed

snippetsEmu removed removed

sokoban removed removed

supertab removed removed

surround removed removed

taglist installed removed

tetris removed removed

utl removed removed

vcscommand removed removed

vimplate removed removed

whatdomain removed removed

winmanager removed removed

xmledit removed removed

上面我们介绍了如何独立于系统配置文件之外,建立自己的Vim配置文件。当我们自己下载安装Vim插件的时候,也可以另外建立目录,放置我们自己的插件。这个目录一般为/home/user/.vim

vim-addons install xxxx

关于vim-addons命令的详细用法,可以通过“man vim-addons”查看其帮助文档

4、标签浏览器Taglist

Taglist用于列出了当前文件中的所有标签(宏, 全局变量, 函数名等)

安装Taglist

$ vim-addons install taglist

配置Taglist

在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- 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

进入vim后用命令":Tlist"打开/关闭taglist窗口

5、文件浏览器和缓冲区管理器WinManager

WinManager用于管理文件浏览器和缓冲区(buffer)。2.0以上版本的WinManager还可以管理其他IDE类型插件,不过要用户在插件中增加一些辅助变量和hook来支持WinManager(帮助文档有相关说明)。

Taglist插件本身就提供了对WinManager的支持,不需要我们去修改它。这里,我们就用WinManager来管理文件浏览器netrw和标签浏览器Taglist。netrw是标准的vim插件, 已经随vim一起安装进系统里了, 不需要我们自行下载安装。

安装WinManager

lingd@ubuntu:~$ vim-addons install winmanager

配置WinManager

在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- WinManager setting --

let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件

"let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim

nmap wm :WMToggle<cr>

常用命令

:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage

文件浏览器命令(在文件浏览器窗口中使用)

<enter>或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件

<tab> 如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件

<F5> 刷新列表

- 返回上一层目录

c 使浏览目录成为vim当前工作目录

d 创建目录

D 删除当前光标下的目录或文件

i 切换显示方式

R 文件或目录重命名

s 选择排序方式

r 反向排序列表

x 定制浏览方式, 使用你指定的程序打开该文件

winmanager帮助文档

:help winmanager

netrw帮助文档

:help netrw

6、项目目录数管理器Project

Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。

安装Project

lingd@ubuntu:~$ vim-addons install project

Project目录树可以通过下面的步骤生成:

1) 打开vim在命令模式下输入 :Project,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的

2)在命令模式下(不是插入模式)输入\C (大写的C),会出现下面这些信息:

Enter the Name of the Entry: xxxx (输入项目名称)

Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)

Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致

Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)

PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。

7、quickfix命令集

通过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。

在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- QuickFix setting --

" 按下F6,执行make clean

map <F6> :make clean<CR><CR><CR>

" 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息

map <F7> :make<CR><CR><CR> :copen<CR><CR>

" 按下F8,光标移到上一个错误所在的行

map <F8> :cp<CR>

" 按下F9,光标移到下一个错误所在的行

map <F9> :cn<CR>

" 以上的映射是使上面的快捷键在插入模式下也能用

imap <F6> <ESC>:make
clean<CR><CR><CR>

imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>

imap <F8> <ESC>:cp<CR>

imap <F9> <ESC>:cn<CR>

帮助文档

:help usr_30

:help quickfix

下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >

:make {arguments}

如果编译时出现错误,按 <Enter>,回到vim界面,看不到出错信息了!这时,可以运行以下命令

:cw[indow]

打开quickfix窗口来查看出错信息,它会自动跳到第一处出错的地方。然后,你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置

:cn[ext] 光标移到下一个错误所在的行

:cp[revious] 光标移到上一个错误所在的行

:cfirst 到第一处错误

:clast 到最后一处错误

:cc 空间不够时,Vim 会缩短出错信息。如果你想查看详细信息,可以使用此命令

:cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)

8、vim常用快捷键

% 跳转到配对的括号去

[[ 跳转到当前或者上一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)

][ 跳转到当前代码块(函数定义、类定义等)的结尾去(但要求代码块中'{'必须单独占一行)

]] 跳转到下一代码块(函数定义、类定义等)的开头去(但要求代码块中'{'必须单独占一行)

[/ 跳到注释开头(只对/* */注释有效)

]/ 跳到注释结尾(只对/* */注释有效)

gD 跳转到当前文件内标识符首次出现的位置,可用于跳转到全部变量的定义处;查找局部变量时,要是多个函数中定义了该局部变量,使用gD进行查找,找到的变量定义可能不是你需要的

gd 跳转到当前函数内标识符首次出现的位置,可用于跳转到局部变量的定义处

'' 跳转到光标上次停靠的地方, 是两个', 而不是一个"

mx 设置书签,x只能是a-z的26个字母

`x 跳转到书签处("`"是1左边的键)

> 增加缩进,"x>"表示增加以下x行的缩进

< 减少缩进,"x<"表示减少以下x行的缩进
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: