Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315293
  • 博文数量: 89
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 691
  • 用 户 组: 普通用户
  • 注册时间: 2015-09-20 16:58
文章分类

全部博文(89)

文章存档

2017年(1)

2016年(35)

2015年(53)

我的朋友

分类: LINUX

2015-09-27 22:40:30

vim是linux底下最常用的文本编辑器, 与cscope结合可以高效的修改/阅读代码,

1, 安装:
    #sudo apt-get install vim cscope ctags vim-scripts

为了支持系统粘帖板, 必须安装
    #sudo apt-get install gvim
PS: gvim有多个, 可以自己选择一个安装


为了支持ctag和winmanger, 将vim-scripts下的文件连接进vim目录:
mkdir -p  ~/.vim/doc
mkdir -p  ~/.vim/plugin
ln -s /usr/share/vim-scripts/plugin/winmanager.vim  ~/.vim/plugin/
ln -s /usr/share/vim-scripts/plugin/taglist.vim   ~/.vim/plugin/

ln -s /usr/share/vim-scripts/doc/winmanager.txt   ~/.vim/doc/
ln -s /usr/share/vim-scripts/doc/taglist.txt    ~/.vim/doc/

PS:
    要是vim-script中的插件有报错, 可以自己网上下载插件,
并将*.vim放到 ~/.vim/plugin/  目录下就可以使用该插件.

2, 配置vim的快捷方式:
    #sudo vim /etc/vim/vimrc.local
#######################################################
"
"an vimrc file for use define
"
"
"vim setting
"
set number         "display  line number
set mouse=a     "mouse no select line number
set ruler          "show the cursor position all the time
set showcmd    "display incomplete commands
set incsearch      "do incremental searching
set autoindent  "always set autoindenting on
set cindent shiftwidth=8
set shiftwidth=8
set tabstop=8 "set tab width
set expandtab "expand tab
set clipboard=unnamed

if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

highlight StatusLine cterm=bold ctermfg=yellow ctermbg=blue
set  statusline+=%F
set  laststatus=2

map a  u
map d 
map w  :w!
map q  :q!
map x  dd    
"use system clipboard
map c  "+y    
map v  "+p     
map s  v
"
"cscope setting
"
if has("cscope")
set nocscopeverbose
map s :cs find s =expand("")
map g :cs find g =expand("")
map c :cs find c =expand("")
map t :cs find t =expand("")
map e :cs find e =expand("")
map f :cs find f =expand("")
map i :cs find i =expand("")
map d :cs find d =expand("")
map r :cs reset
map x 
map z 
map    /=expand("")
if filereadable("cscope.out")
        cs add cscope.out
    " else add database pointed to by environment
    elseif $CSCOPE_DB != ""        
        cs add $CSCOPE_DB
endif
endif


"
"host key for edit mode
"
imap a  a
imap d 
imap w  :w!
imap q  :q!
imap x  dd    
imap c  y
imap v  p
imap s  v


if has("cscope")
imap s s
imap g g
imap c c
imap t t
imap e e
imap f f
imap i i
imap d d
imap r r
imap b b
imap x
imap z
imap  
endif

"
"ctag setting
"
let Tlist_Show_One_File=1  
let Tlist_Exit_OnlyWindow=1  
"let Tlist_Use_Right_Window = 1
set tags=tags;/

"
"winManager
"
let g:winManagerWindowLayout='FileExplorer|TagList'
let g:persistentBehaviour=0
nnoremap :WMToggle



##############################################################
    然后在/etc/vim/vimrc, 加入一行source /etc/vim/vimrc.local,重启vim, 这样vim的配置就能生效了

3, 快捷键的使用
    这样,我们不管在编辑模式下,还是在基本模式下, 都可以使用以下快捷键盘:
    C+c+s:查找当前光标所在的symbol
    C+c+g:查找当前光标所在的symbol的定义
    C+c+c:查找当前光标所在的symbol的调用(被调用)
    C+c+t:查找当前光标所在的字符串(文本方式查找, 完全匹配)
    C+c+e:查找当前光标所在的字符串(文本方式查找, 正则匹配,egrep)
    C+c+f: 查找以当前光标所在的字符串为名的文件
    C+c+i: 查找以当前光标所在的字符串为名的头文件
    C+c+d:查找当前光标所在的函数的调用函数(调用别人)
    C+c+r: 重新导入cscope数据索引
    C+c+b: 重建cscope数据索引
    C+c+z: 退回上个编辑界面(如果有的话)
    C+c+x:前进到下个编辑界面(如果有的话)
    C+f:    在本文高亮查找字符串
    C+n:  在编辑模式下, 可以补全字符
    
    C+x+s:   选中文本, 也可以用鼠标选中文本,效果一样
    C+x+x:   删除,同时复制该文本到粘帖板
    C+x+c:  复制文本到系统粘帖板(可以与gedit, firefox等共享)
    C+x+v:  粘帖系统粘帖板的文本到vim(可以与gedit, firefox等共享)
    
    C+x+a:    退回修改
    C+x+d:    不退回修改
    C+x+w:   保存文件(强制)
    C+x+q:    退出(强制)
    C+x

   在基本模式下, 使用
    C+t 可以打开winmanager和ctag的组合窗口

4, vim常用命令
    1, 行号跳转
        :128   -- 跳转到128行
        128G  -- 跳转到128行
        Shift+g  -- 跳转到最后一行
   
    2, 查找
        /string  -- 向下查找字符串string
        ?string --向上查找字符串string
        而后, 一直按n就可以一直向下/上查找该字符串
 
    3,替换
        :[range]s/from/to/[flags]
    [range]: 替换的文本范围
        无 --当前光标所在行
        %  -- 全局
        2    --第2行
        2,10,  --第2行到第10行
        /string/ -- 向下查找到string所在的第1行
        ?string? -- 向上查找string所在的第1行
    [flags]
        无 --第1个匹配替换
        g -- 所有的匹配替换
        c --每次替换都需要确认
    实例:
        本行替换:  :s/from/to/g
        全局替换:  :%s/from/to/g
        匹配替换:  :/string/s/from/to/g           
        插入注释:  :2,10s/^/#/g     
        特殊字符替换:  :%s#/usr/bin#/bin/g
    
    4,删除
        : [range]d
    [range]
        d, 删除当前行
        2d, 删除光标所在的行往下的2行
        2, 删除第2行
        2,10, 删除第2行到第10行
        /string/ -- 向下查找到string所在的第1行
        ?string? -- 向上查找string所在的第1行

    5,行合并
        shift+j,  将下一行和当前行合并成一行

    6, 导入/导出
        :2r /tmp/test1, -- 在第2行导入文件/tmp/test1的内容
        :2,10w /tmp/file1   -- 将2到10行写入到/tmp/file1
        :2,10w     -- 将2到10行写入磁盘

5, 用cscope辅助阅读c/c++, python,bash等代码

    c/c++代码:

    cscope -bkqR
    ctags -R *

    python代码:
    find  ./  -name "*.py"  > cscope.files
    cscope -bkq     -i  ./cscope.files

   sh脚本:
    find ./ -name "*.sh"  > cscope.files
    cscope -bkq  -i ./cscope.files

    其他类似

参考文档:     
    http://www.cnblogs.com/napoleon_liu/articles/1988535.html

阅读(1649) | 评论(0) | 转发(0) |
0

上一篇: Linux下常见硬盘问题

下一篇:git+svn的使用

给主人留下些什么吧!~~