windos到linux的适应

     Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, ***之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲。善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 但功能绝对不比一个好的IDE差, 该有的功能都有,  不该有的功能也有, 你就自己没事偷着乐吧,总结起来就是“要什么配置什么”咯,下面我开始介绍今天的工作了:

1、我的初步配置界面:

linux vim配置,打造ide_第1张图片

2、今天的主要工作:

本文将教会

1. vim编程常用命令

2.  语法高亮
3.  在程序中跳来跳去: Ctags 的使用
4.  教你高效地浏览源码 -- 插件: TagList
5.  文件浏览器和窗口管理器 -- 插件: WinManager
6. 自动补全
本文不会教你:
1.  如何使用vim. 本文不会从零开始教你如何使用vim, 如果你是第一次接触vim, 
   建议你先看看其他的vim入门的教程, 或者在shell下输入命令: vimtutor, 
   这是一个简单的入门教程.
2.  编程技巧.
3.  vim脚本的编写.


提示: 首先,我的工作环境是centos 6.5,具体情况根据自己的环境来。

       其次,文中的一些路径:

        ~/.vim/plugin
        ~/.vim/doc

        如果没有就在自己的工作目录下创建(创建之前查看是否有该目录)

        文中说到的.vimrc文件都是指 ~/.vimrc(Vim本身的系统配置文件夹是在/usr/share/vim/             和/etc/vim/两个文件夹下。因为.vim是隐藏 文件,所以查看.vim 用命令:ls -a,一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user(其中,user为用户名,我的用户名是mgys)下建立自己的配置件。使用 $cd ~ 切换到用户文件夹,$touch .vimrc文件,在其中添加自己风格的配置

       最后,对于不清楚过程中的解压命令什么的,自己查;

下面开始工作:

一、语法高亮(vim环境的基本配置)

首先查看自己的系统是否有vim,没有再装vim,装好之后,接下来就是我们的工作,

(1)~$:vim ~/.vimrc

打开.vimrc文件,将下面文档 复制(copy),粘贴(shift+insert),保存退出(wq);

" 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

注:配置文件中,以单个双引号开头的文字为注释。
保存文件之后,启动Vim。此时,Vim已经是这种效果了(语法高亮挺漂亮的)

(2)进入vim界面,便可发现如下界面:

linux vim配置,打造ide_第2张图片

在此之后没有这种效果,可以再次打开.vimrc编辑添加下面命令:

 if filereadable("/etc/vim/vimrc.local")

   sourse /etc/vim/vimrc.local

 endif

set nu

set nobackup

set cursorline

set ruler

set tabstop=4

set autoindent

if has("syntax")

  syntax  on

endif

保存退出重复上面过程。

二、在程序中跳来跳去: Ctags 的使用

ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形,ctags其实就跟一棵树一样指引我们去某个路径下找什么东西;

(1)下载并安装压缩包:

下 载ctags源码ctags-5.8.tar.gz
http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz

(2)解压并安装
tar zxvf ctags-5.8.tar.gz
cd ctags-5.8
./configure && make && make install(切换root)

(3)建立索引
建立源码索引,比如需要查看库函数源代码,而这些代码放在/usr目录下
那么在终端进入到该目录后,输入命令ctags -R ,你会发现多了一个tags文件,这个就是索引文件

建立索引之后就不要再移动ctags文件,否则查看原型时提示找不到ctags;查看自己建立的索引:


wKioL1dRNsLzt-I5AABEEATmCac881.png-wh_50

(4)添加索引tags的路径

$ vim ~/.vimrc
在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)

"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . :TlistUpdate
imap :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . :TlistUpdate
set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=/usr/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

注:

set tags+=./tags表示在当前工作目录下搜索tags文件
set tags+=/usr/tags表示在搜寻tags文件的时候,也要搜寻~/usr/文件夹下的tags文件。
然后保存并退出vi。这样,你就可以用vim在任意地方查看有关库函数原形

(5)查看原型

进入vim,不进insert,将光标放在printf函数上摁ctrl+w+]即可看到函数原型如下:


linux vim配置,打造ide_第3张图片

查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方。

(6)tag命令用法:

Ctrl+]  跳到当前光标下单词的标签
Ctrl+O  返回上一个标签
Ctrl+T  返回上一个标签
:tag TagName 跳到TagName标签
以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签,可以使用以下命令:
:stag TagName 新窗口显示TagName标签,光标跳到标签处
Ctrl+W + ]  新窗口显示当前光标下单词的标签,光标跳到标签处
:tselect TagName
输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
:ptag TagName 预览窗口显示TagName标签,光标跳到标签处
Ctrl+W + }  预览窗口显示当前光标下单词的标签,光标跳到标签处
:pclose   关闭预览窗口


三、教你高效地浏览源码 -- 插件: TagList

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

(1)下载taglist_xx.zip并解压完成

将解压出来的doc的内容放到(mv filename.zip 目标路径)~/.vim/doc; 

将解压出来的plugin下的内容拷贝到~/.vim/plugin。一般刚开始时工作目录下是没有.vim文件夹的;所以自己创建一个.vim就行了(有就不用了),方法跟windows下创建文件夹的方法一样。

下载链接:
http://www.vim.org/scripts/script.php?script_id=273

(2)完成后在在.vimrc 中添加如下三条指令:

let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1

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

完成如图:

linux vim配置,打造ide_第4张图片

(3)taglist的常用使用命令:

         跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
      显示光标下tag的原型定义
u             更新taglist窗口中的tag
s             更改排序方式,在按名字排序和按出现顺序排序间切换
x             taglist窗口放大和缩小,方便查看较长的tag
+             打开一个折叠,同zo
-             将tag折叠起来,同zc
*             打开所有的折叠,同zR
=             将所有tag折叠起来,同zM
[[            跳到前一个文件
]]            跳到后一个文件
q             关闭taglist窗口
          显示帮助

可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。


四、文件浏览器和窗口管理器 -- 插件: WinManager


作用:WinManager用于管理文件浏览器和缓冲区(buffer)。2.0以上版本的WinManager还可以管理其他IDE类型插件,不过要用户在插件中增加一些辅助变量和hook来支持WinManager(帮助文档有相关说明)。Taglist 插件本身就提供了对WinManager的支持,不需要我们去修改它。这里,我们就用WinManager来管理文件浏览器netrw和标签浏览器 Taglist。netrw是标准的vim插件, 已经随vim一起安装进系统里了, 不需要我们自行下载安装。


(1)解压winmanager.zip并解压

将解压出来的doc的内容放到~/.vim/doc;

将解压出来的plugin下的内容拷贝到~/.vim/plugin;
下载链接:http://www.vim.org/scripts/script.php?script_id=95

(2)完成后在.vimrc 中添加下面两行指令:

let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle

注意:wm与:WMToggle之间有个空格

(3)同样,进入vim,效果如下:

linux vim配置,打造ide_第5张图片


(4)常用命令
:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
刷新列表
- 返回上一层目录
c 使浏览目录成为vim当前工作目录
d 创建目录
D 删除当前光标下的目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
r 反向排序列表
x 定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw

五、实现括号的代码补齐

~$ vim .vimrc

直接在.vimrc 中添加以下指令并保存

inoremap ( ()i

inoremap [ []i

inoremap { {}i

inoremap < <>i]]))   

完成后保存并退出查看效果。

   如果后期还需要什么想要的功能可以按照上面的方法再次对自己的vim进行配置完善,相信会更加便捷和完美。