Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59598
  • 博文数量: 8
  • 博客积分: 199
  • 博客等级: 入伍新兵
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-10 15:42
文章分类

全部博文(8)

文章存档

2012年(8)

我的朋友

分类: LINUX

2012-06-11 22:23:29

     上回说了一点linux的基本操作,这次准备说一下vim编辑器的打造。之所以要说一下,是因为在linux下一般都使用文本编辑器,不过vi/vim就是相当牛X的一个,不过,要像windows下那些编辑器有自动补全功能,还需要自己设置一下。所以要想少打一字母,就得有一个比较好用的编辑器,个人比较喜欢使用vim编辑器,打开应用程序—>ubuntu软件中心—>获取软件中输入vim找到后直接安装就OK了,和XP下的360安装软件有点类似。安装后好,就要进行一些配置了。不然真的不好用,到少要显示行号,写CC++代码要有自动补全功能,如下图所示。

所以先要对“vim”编辑器进行改造。网上有很多关于牛人写有关于vim改造的步骤,在这里推荐:

http://blog.chinaunix.net/space.php?uid=23089249&do=blog&id=2855999

 

http://blog.csdn.net/wooin/article/details/1858917

下图为该牛人打造的vim编辑器,相信看了过后,你一定非常喜欢。

 

 

    这篇博客对打造IDEvim作了比较详细的说明步骤,我就不再多说(偷一下懒)。以下为我为参考了该博客的vim配置:

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

 

 runtime! 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:!:makeCTRL-] CTRL-^命令时进行;用 :bufferCTRL-OCTRL-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  

"-- omnicppcomplete setting --

 

" 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码

 

"imap

" 按下F2根据头文件内关键字补全

"imap

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

 

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

 

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

"--fold setting--

 

set foldmethod=syntax " 用语法高亮来定义折叠

set foldlevel=100 " 启动vim时不要自动折叠代码

set foldcolumn=5 " 设置折叠栏宽度

 

"-- QuickFix setting --

"--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/include/c++/tags

 

 

" F5编译和运行C程序,F6编译和运行C++程序

" " 请注意,下述代码在windows下使用会报错

" " 需要去掉./这两个字符

"

" " C的编译和运行

map :call CompileRunGcc()

func! CompileRunGcc()

exec "w"

exec "!gcc % -o %<"

exec "! ./%<"

endfunc

" 按下F6,执行make clean

 

map :make clean

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

map :make :copen

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

map :cp

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

map :cn

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

imap :make clean

imap :make :copen

imap :cp

imap :cn

 

map :cs add ./cscope.out . :cs reset

imap :cs add ./cscope.out . :cs reset

" :cs find cCscope查找命令映射为c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c

nmap s :cs find s =expand("") :copen

nmap g :cs find g =expand("")

nmap d :cs find d =expand("") :copen

nmap c :cs find c =expand("") :copen

nmap t :cs find t =expand("") :copen

nmap e :cs find e =expand("") :copen

nmap f :cs find f =expand("")

nmap i :cs find i =expand("") :copen

 

let g:SuperTabRetainCompletionType = 2

let g:SuperTabDefaultCompletionType = ""

 

 

"-- Cscope setting --

 

if has("cscope")

    set csprg=/usr/bin/cscope        " 指定用来执行cscope的命令

    set csto=0                        " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库

    set cst                            " 同时搜索cscope数据库和标签文件

    set cscopequickfix=s-,c-,d-,i-,t-,e-    " 使用QuickFix窗口来显示cscope查找结果

    set nocsverb

    if filereadable("cscope.out")    " 若当前目录下存在cscope数据库,添加该数据库到vim

        cs add cscope.out

    elseif $CSCOPE_DB != ""            " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim

        cs add $CSCOPE_DB

    endif

    set csverb

endif

set completeopt=longest,menu

 

set runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after,/root/.vim/autocomp

 

       以下为我的vim配置文件。有兴趣的可以直接解压放在/root目录下。

 

 vim.zip   

 

        还有一些功能没有实现,会在以后慢慢补上。Vim环境搭建好后,就开始进行Linux那漫长的学习之路了……

    下回准备说一下关于vim的一些常用的简单命令。
阅读(28727) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~