不停地疯

Work as a hacker, hack as a artist.

Vim的简单配置

| Comments

自己平时喜欢使用GNU Emacs,但是单位工作环境的限制,使我不得不在GNU Screen下运行GNU Emacs。但是貌似Screen和Emacs有点小的兼容性问题,至少我没能调整到完全正常。使用中,Emacs经常会上移一行从而造成画面错乱,让人用的很不爽。为此,我决定在工作环境中暂时使用别的编辑器来替代Emacs。之后,我尝试过使用Micro Emacs,包括Linus最喜欢用的uEmacs PK,可惜这玩意儿和GNU Emacs差异有点大,加之所有MicroEmacs对多字节语系支持地都不是很好,而自己又是个懒人也不是特别Geek,就没继续用下去。于是我重新将目光放到了VIM 上。 好在工作中对编辑器的要求不是特别高,VIM也不是特别难使,自己又磕磕碰碰地在网上找了些配置添加到自己的Vim上。用起来还不错,可以交叉索引跳转,可以Outline,对我来说,这就够了。 下面简单列举一下Vim的配置方法,算个存档记录。

  • Cscope安装配置
    1. 安装Cscope 去http://cscope.sourceforge.net 下载cscope源码,然后编译安装。
    2. 在个人目录下的 .vimrc 文件中添加如下配置
cscope配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" if has("cscope")
"   set csprg=/usr/local/bin/cscope
"   set csto=1
"   set cst
"   set nocsverb
"   " add any database in current directory
"   if filereadable("cscope.out")
"       cs add cscope.out
"   endif
"   set csverb
" endif
"
" nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
" nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
" nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
" nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
" nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
" nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
" nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
" nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
function! LoadCscope()
let db = findfile("cscope.out", ".;")
if (!empty(db))
  let path = strpart(db, 0, match(db, "/cscope.out$"))
  set nocsverb " suppress 'duplicate connection' error
  set csto=0
  set cst
  " add any database in current directory
  if filereadable(db)
     exe "cs add " . db . " " . path
     nmap <C-c>s :cs find s <C-R>=expand("<cword>")<CR><CR>
     nmap <C-c>g :cs find g <C-R>=expand("<cword>")<CR><CR>
     nmap <C-c>c :cs find c <C-R>=expand("<cword>")<CR><CR>
     nmap <C-c>t :cs find t <C-R>=expand("<cword>")<CR><CR>
     nmap <C-c>e :cs find e <C-R>=expand("<cword>")<CR><CR>
     nmap <C-c>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
     nmap <C-c>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
     nmap <C-c>d :cs find d <C-R>=expand("<cword>")<CR><CR>
  " else add database pointed to by environment
  elseif $CSCOPE_DB != ""
     cs add $CSCOPE_DB
  endif
  set csverb
endif
endfunction
au BufEnter /* call LoadCscope()
  1. 使用时先去要查看的代码目录,然后执行cscope -bqR。完成之后,直接 vi filename 。在需要查找的符号上使用 C-c s/g/c/t/e/f/i/d 即可调用相应的功能。原来cscope插件使用 C-@ 做命令引导键,我为了和Emacs同步,将其改为了 C-c
  2. 添加Outline显示

Outline显示由Taglist来实现:

  1. http://www.vim.org/scripts/script.php?script_id=273 下载Taglist。
  2. 解压后将 taglist.vim 文件放在个人目录下的 .vim/plugin/ 目录中。同时,将解压后的 taglist.txt 文件放在个人目录下的 .vim/doc/ 目录中。
  3. 最后,添加以下配置到个人目录下的 .vimrc 文件中:
taglist配置
1
2
3
4
" use F8 to toggle taglist
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_GainFocus_On_ToggleOpen=1
let Tlist_Close_On_Select=1

如此便可方便的通过F8按键打开当前文件的Outline,并将光标置于Outline中,选择条目后自动关闭。

  • 设置高亮搜索,自动缩进以及语法高亮 将以下配置添加到个人目录下的 .vimrc 文件中:
高亮缩进配置
1
2
3
4
5
6
7
8
9
10
set nu
set hlsearch
syntax enable
set showmatch
set ts=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set cindent

OK,如此配置后,查看代码编辑代码舒服多了。

Linux, Vim, 开发

« 高通编译环境一键安装包 关于在Org-Mode下方便插入截图的方法 »

Comments