配置vim

 vim可以说是一款很强大的编辑软件,其强大在于vim插件和vim配置文件,可以按照用户的习惯改造vim

 一.我的vim效果图

wKiom1dDzDDjuD6JAABQputQ0Fg519.png

简单介绍一下,实现的功能:

 1).实现vim的简单配置(代码高亮,缩进风格等等)

 2).实现查看库文件的实现或者自定义函数的实现。eg:查看printf的实现...

 3).实现查看当前编译文本中定义那些函数

 4).实现括号自动补齐

 5).实现类,结构体,联合的成员函数,成员变量的自动出现可供选择。



二.本机环境,使用工具介绍

  vmware,ubuntu,xshell,xmanager,gedit,vim


三.配置vim

 1).安装vim

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

  其中vim-scripts 是vim的一个基本插件,支持代码缩进,代码高亮等等

 2).vim配置文件

  一般来说 vim有自己的配置文件,我们一般是不去修改这些文件,而是在用户目录底下创建自己的配置文件。vim自己的配置文件一般在 /etc/vim     /usr/share/vim 这两个目录底下

  使用 $cd ~ 切换到用户文件夹,$touch .vimrc文件,在其中添加自己风格的配置


  $cd ~

  $touch .vimrc


 为了方便大段文字的粘贴(符合windows底下的复制粘贴风格),我们首先装一个gedit的插件


 $sudo apt-get install gedit


 这里需要说明一点的是,需要注意的是,如果你在使用xshell的话,需要将除了基本配置xshell外,额外增加一点配置(这点非常重要,我自己被坑了2个多小时,都是眼泪,宝宝心里苦),如图:

wKioL1dD1OPz7P_SAABhJSMDlDs347.png


配置完成,还需要安装xmamager,才可以使用gedit。如果你直接在虚拟机内部操作的话,那就不用这些操作了。


下面是网上一些大牛的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.

     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 



将上面的配置信息,自己选择的使用gedit拷贝到刚才用户目录底下的.vimrc


wKioL1dD1zCTFVpYAACdt3BS8MQ004.png


这是xmanager的效果图


 3).ctags的安装与配置

  ctags可以建立源码的标签索引(标签就是一个表示符被定义的地方,如函数定义),使得程序猿在编程时能够迅速定位函数、变量、宏定义的位置去查看原型。


$sudo apt-get install ctags

建立源码索引


eg:加入你需要查看C\C++的一些库文件的实现,那么你需要在 /usr/include/c++的目录底下输入命令$ctags -R * 生成一个tags文件,当然具体情况具体分析


 wKioL1dD26rhRRH4AAAXPYykhJ4686.png


现在你会发现在 /usr/include/c++ 目录底下多了一个tags文件,这个文件相当于一个索引,包含c++库文件中包含的一些函数的实现,这会使你在vim地下编程的时候方便查看库文件中函数的实现,当然,现在配置还不能实现对库函数的查找,需要在刚才的配置文件.vimrc中加入配置文件。


在.vimrc中加入如下信息



"--ctags setting--

    " 按下F5重新生成tag文件,并更新taglist

    map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>

    imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>

    set tags=tags

    set tags+=./tags "add current directory's generated tags file

    set tags+=~/home/wu/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

    set tags+=/usr/include/c++/tags

   

测试一下看是否可以找到:

在底行模式,使用光标定位到需要查看的函数名上面 ctrl+] 查看,  ctrl+o 回到刚才编写的文本


wKiom1dD3nnRgxqxAAAzSrF9GpE375.png

wKiom1dD3pWQBrY_AAA_731jIBQ618.png


 4).实现括号的代码补齐



在配置.vimrc文件,网上大牛的配置,大家参考一下


:inoremap <S-ENTER> <c-r>=SkipPair()<CR>
:inoremap <S-SPACE> <ESC>la
:inoremap <C-ENTER> <ESC>A;<CR>
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { <c-r>=ClsoeBrace()<CR>
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap ;; <ESC>A;<CR>

function ClosePair(char)
   if getline('.')[col('.') - 1] == a:char
      return "\<Right>"
   else
      return a:char
   endif
endf
function Semicolon()
   "echo getline('.')[col('.')]
   if getline('.')[col('.')] == ')'
      return "<ESC>A;"
   elseif getline('.')[col('.')] == '}'
      return "\<ESC>A;"
   elseif getline('.')[col('.')] == ']'
      return "\<ESC>A;"
   else
      return ";"
   endif
endf
function SkipPair()
   if getline('.')[col('.') - 1] == ')'
      return "\<ESC>o"
   else
      normal j
      let curline = line('.')
      let nxtline = curline
      while curline == nxtline
         if getline('.')[col('.') - 1] == '}'
            normal j
            let nxtline = nxtline + 1
            let curline = line('.')
            continue
         else
            return "\<ESC>i"
         endif
         
      endwhile
      return "\<ESC>o"
   endif
endf
function ClsoeBrace()
   if getline('.')[col('.') - 2] == '='
      return "{}\<ESC>i"
   elseif getline('.')[col('.') - 3] == '='
      return "{}\<ESC>i"
   elseif getline('.')[col('.') - 1] == '{'
      return "{}\<ESC>i"
   elseif getline('.')[col('.') - 2] == '{'
      return "{}\<ESC>i"
   elseif getline('.')[col('.') - 2] == ','
      return "{}\<ESC>i"
   elseif getline('.')[col('.') - 3] == ','
      return "{}\<ESC>i"
   else
      return "{\<ENTER>}\<ESC>O"
   endif
endf



配置到这里估计很多人都熟悉套路了,本篇文章只是起到一个抛砖引玉的作用,关于命令的使用和各个插件的使用,还需要各位去网上找资料


 以上就是本人在学习过程中的一些经验总结。当然,本人能力有限,难免会有纰漏,希望大家可以指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章