vim的使用

来源:互联网 发布:电脑无法识别网络 编辑:程序博客网 时间:2024/06/10 11:41

取消撤销

 ctrl+r

打开文件

打开多个文件

  横向分割: vim -o file1 file2 / :vsplit file

  纵向分割:  vim - O file1 file2 / :split  file 

  不分割:   vim file1 file2 ... filen /  :open file --> :split/:vsplit

切换文件

  分割的文件之间:ctrl + ww 

  不分割的文件间::bn/ :bp

关闭文件

  关闭光标所在窗口:  :q

  关闭除光标所在窗口外的其他窗口: :only

操作文件

带操作的打开文件: vi file +10 / vi file +/string

移动光标

Ctrl + B : 向后退一页

Ctrl + F : 向前进一页

GG        : 移动到开头

Shift + G: 移动到最后

W / E           : 下一个词的开头/结尾

^ /           : 第一个非空白位置;

#          :移动到光标所在字符串的下一个位置;

查找字符串

 /string

替换字符串 

 :m,ns/old/new/gc    : %s/old/new/gc


makefile中避免tab键转换成4个空格

一般写代码的时候,都将tab键转换成4个空格(通过set expandtab命令)

不过,写Makefile的时候,tab有特殊含义——表明这行是规则,不是目标——不能转换成空格

可以先敲ctrl-v组合键,再敲tab键,这样就不会被转换成空格了


自动添加表头信息

在.vimrc中添加如下代码后,在vi打开文件后按 F4 按键就可以在开头添加注释信息;

"进行版权声明的设置
"添加或更新头
map <F4> :call TitleDet()<cr>'s
function AddTitle()
    call append(0,"/*=============================================================================")
   " call append(1,"#")
    call append(1,"# File: ".expand("%:t"))
    "call append(3,"#")
    call append(2,"# Brief: ")
   " call append(5,"#")
    call append(3,"# Author: tsc")
    "call append(7,"#")
    call append(4,"# Modified: ".strftime("%Y-%m-%d %H:%M"))
   " call append(9,"#")
   " call append(10,"# ")
   "call append(5,"#")
    call append(5,"=============================================================================*/")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
    let n=1
    "默认为添加
while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle()
endfunction

添加注释的快捷键

方法一
批量添加
ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I(shift+i),再插入注释符,比如"//",再按Esc,就会全部注释了;
批量去掉注释
ctrl+v,进入列编辑模式,横向选中列的个数(如"//"注释符号,需要选中两列),然后按d, 就会删除注释符号;

方法二
使用下面命令在指定的行首操作
添加注释
:起始行号,结束行号s#^#注释符#g
取消注释
:起始行号,结束行号s#^注释符##g

ctags使用

1) 安装:apt-get install exuberant-ctags

2)生成tags文件 : 在目录树的根目录里,使用命令:ctags-R
3)
编辑vim配置文件.vimrc
     添加两行: 
    set tags=tags;
      set autochdir
注意第一个命令里的分号是必不可少的。这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,或者没有找到对应的目标,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。
当然你如果想直接使用绝对路径,这样也是可以的:
settags=/home/xxx/myproject/tags

3vim文件时,用用ctrl+]来执行跳转,通过ctrl+t来跳转回来就可以了,很方便的。

ctrl+n : 自动补全变量和函数;   : TlistToggle : 列出函数列表;

:ts x,列出符号x的定义
:tj x,可以看做上面两个命令的合并,如果只找到一个符号定义,那么直接跳转到符号定义处,如果有多个,则让用户自行选择。
Ctrl+],跳转到当前光标下符号的定义处,和ta类似。
Ctrl+t,跳转到上一个符号定义处,和上面的配合基本上就能自由跳转了

gd和ctrl+o :用于跳转局部变量;

%: 跳转到相匹配的括号;



 函数列表显示的方法

 用到的ctags需要自己安装一下,不要用旧的那个ctags,新的叫Exuberant Ctags,apt安装即可:  apt-get install exuberant-ctags  

然后按照vim.org上的安装说明,下载taglist_42.zip,解压到home目录下的.vim子目录中:  http://www.vim.org/scripts/download_script.php?src_id=7701
    ~/.vim$ unzip taglist_42.zip   

  进入 $HOME/.vim/doc目录,打开vim,运行“:helptags .”命令,注意后面的点不要丢了,这是为了生成ctags帮助文件的索引,然后才能正常使用帮助。(原来vi帮助中的ctrl+]进入链接、ctrl+T返回也是这么来的)

  现在,再启动vim,tags功能就可以用了:

   大概用法: 在使用vim的时候,使用: TlistToggle 命令切换函数列表的开、关。 按住ctrl键然后按两下w键在正常编辑区域和tags区域中切换。 在tags区域中,把光标移动到变量、函数名称上,然后敲回车,就会自动在正常编辑区域中定位到指定内容了,很方便的。

常用的几项.vimrc设置:
“禁止自动改变当前Vim窗口的大小       let Tlist_Inc_Winwidth=0

“把方法列表放在屏幕的右侧                  let Tlist_Use_Right_Window=1

“让当前不被编辑的文件的方法列表自动折叠起来, 这样可以节约一些屏幕空间         let    Tlist_File_Fold_Auto_Close=1

不能正常使用方向键与退格键

 因为ubuntu预装的是vim tiny版本,而需要的是vim full版本

方案一:

   $sudo apt-get remove vim-common
   $sudo apt-get install vim

   有时候不行,执行完第一个指令后,在执行第二个指令时,提示找不到依赖;此时可以更换一下源地址试试。

方案二:
   /etc/vim/vimrc.tiny中将set compatible 改为set nocompatible  下一行在添加set backspace=2

  在执行上述的时候,因为vi不能正常用,所以要按a键进入编辑模式,在进入某个模式前先按一下esc键。

   但此方式的弊端是因为vi版本太低导致程序中的关键字不变色



0 0
原创粉丝点击