vim配置

转自:http://www.cnblogs.com/ypchenry/archive/2012/05/28/2520705.html

相信每一vim本书都会介绍给初学者一个叫vimtutor的,可以花几十分钟时间跟着过一边。我总结一下最近看的

   移动

    只列我用的比较多的命令,所有的注释都用"(vim脚本注释符)

 1 h      "
 2 j      "
 3 k      "
 4 l      "右,not left
 5 w      "光标移动到下一个单词的首字符 a word forward
 6 b      "光标移动到上一个单词的首字符
 7 e      "光标移动到下一个单词的尾字符
 8 ge     "光标移动到上一个单词的尾字符
 9 $      "将光标移动到当前行行尾
10 ^      "将光标移动到当前行第一个非空白字符
11 0      "将光标移动到当前行第一个字符

      注:  1)  对于一个word(单词)边界的定义可以查看iskeyword选项.

              2)  这些命令除了'0'命令以外都可以在前面接受一个记数,2$;上面所有命令可以在前面接受一些操作命令,如d$,dw等.

   搜索和定位标记与滚屏

     单字符搜索

1 f<a>     "单字符搜索,fa是在当前行搜索下一个a,find a
2 F<a>     "Fa是在当前行向前搜索上一个a
3 t<a>     "ta是当前行搜索下一个a,光标停在a的前一个字符,to a
4 T<a>     "与ta方向相反

       单词搜索

1 /string    "全文本搜索一个字符串,如要找到单词"main"要用 /main
2             如果文本有多个main,按下几次n就会移动到接下来的几个
3             main中去;n前面也可以接受数字计数,如3n,就会找紧接
4             着第三个main
5 
6string    "与/string的功能相同,唯一的区别就是搜索的方向相反

       注:  1)可以用:set noingorecase 忽略字符大小写

               2)/和?命令都有记忆功能,可以用多次<UP>键选择搜索历史,记录命令最大的历史条数可以在会话viminfo上更改.

               3)  搜索字符.*/?%$^[]等特殊字符要在前面加一个反斜杠转意

               4) 搜索到孤立的单词,也就是前后都没有其他字符的(除了空格,制表符),如只搜the,不想搜到there或whether这样的,要用/<the>

               5)  可以用:set hlsearch把要搜索的单词高亮显示,highlight search

        定位

复制代码
1 G      "光标移动到文件的最后一行
2 15G    "光标移动到文件的第15行
3 gg     "光标移动到文件的第一行
4 45%    "光标移动到文件45%处
5 H      "光标移动到当前屏幕的最开始,head or home
6 M      "光标移动到当前屏幕的中间,middle
7 L      "光标移动到当前屏幕的最后,last
复制代码

        注:   CTRL+G查看当前光标位置

       标记

      1)在光标所在位置用m命令实现标记,如ma,就把当前光标状态标记为a,使用`a就会回到此光标位置;用:marks命令查看标记列表

      2):map设置简单的映射,如:map F5 i{<Esc>ea}<Esc>  ,当光标在main这个单词的m上时,按下F5,这个命令会main变成{main}

        滚屏

复制代码
1 CTRL+u       "窗口向上滚半屏
2 CTRL+d       "窗口向下滚半屏
3 CTRL+e        "向上滚一行,没太大实际意义
4 CTRL+y        "向下滚一行
5 CTRL+f        "向前滚一整屏
6 CTRL+b        "向后滚一整屏
7 zz            "当前行置于屏幕中央
8 zt            "当前行置于屏幕顶端
9 zb            "当前行置于屏幕底端
复制代码

 改动

复制代码
 1 x           "删除一个字符
 2 d           "其后跟任何一个位移命令,将删除从当前光标到位移终点处的文本
 3              内容,如dw,delete word                          
 4 c           "与d命令功能类似,不同的在执行完删除后命令进去Insert模式,change 
 5 dd          "删除一整行
 6 r           "等待键入下一个字符替代当前光标下的那个字符,如5rx
 7 p           "把需要内容放到光标下,put
 8 y           "复制,yank
 9 yy          "复制一整行
10 "*yy        "把一行内容复制到剪贴板
11 "*p         "把剪贴板内容复制过来
复制代码

   

   定制VIM

      在linux系统的家目录下建一个.vimrc文件(ubuntu和fedora都需要自己建), 然后在vimrc下写一些vim脚本命令就可以配置你的vim了,在vim配置文件上,要注意用户配置文件优先与系统配置文件,在增加vim plugin的时候要在~/.vim下mkdir plugin ftplugin 等等,把想用到的  plugin(在/usr/share/vim/vim73/plugin或ftplugin或syntax)放到刚才新建的相应的文件夹下,当然如果对vim脚本比较熟悉也可以自己写一个plugin。下面是我的vimrc部分内容。

复制代码
 1 set number
 2 set nocompatible    " 关闭兼容模式
 3 filetype plugin indent on
 4 syntax enable       " 语法高亮
 5 syntax on
 6 set shortmess=atI   " 去掉欢迎界面
 7 set autoindent
 8 set showcmd         " 显示命令
 9 set whichwrap=b,s,<,>,[,] " 退格键和方向键可以换行
10 set incsearch       " 增量式搜索
11 set ignorecase      " 搜索时忽略大小写
12 set ai              " 自动缩进
13 set si              " 智能缩进
14 set showmatch       " 显示匹配的括号
15 set history=400  " vim记住的历史操作的数量,默认的是20
16 set autowrite
17 "从系统剪切板中复制,剪切,粘贴
18 map <F7> "+y
19 map <F8> "+x
20 map <F9> "+p
复制代码

      viminfo

     时刻要注意有这么一个东西,她记录了 1)命令行历史记录和搜索命令历史记录 2)vim寄存器中的内容 3)文件中的标记 4)缓冲区列表 5)全局变量,每次推出vim时这些  信息都会存在viminfo文件中,下次启动vim时vim会读取viminfo中的内容并恢复这些信息。

     可以用:set viminfo=string保存更多的东西,string指代要保存的东西,语法是一个选项字符跟一个参数,一对对的选项参数用逗号隔开,如:set viminfo='1000,:set viminfo='1000,f2

 string里的可选选项有

复制代码
 1 '  为多少文件保存标记信息
 2 f  是否保存全局标记,f0不保存,f1保存
 3 <  每个寄存器保存多少行
 4 :  要保存冒号命令的历史记录数
 5 @  要保存的输入历史记录数
 6 /  要保存的搜索命令历史记录数
 7 !  以大写开始并不含所有小写字母的全局变量
 8 h  开始是禁用hlsearch选项
 9 %  缓冲区列表
10 c  使用'encoding'选项中的方法进行字符编码转换
11 n  viminfo文件名字,必须是最后一项
复制代码

 

   编辑多个文件

 1)在vim窗口下可以用:edit 编辑两外一个文件,不需要重新打开一个vim窗口,如:edit 1.c

 2) 启动vim是打开指定多个文件,如vim 1.c 2.c 3.c,:next跳转到下一个文件,:previous跳转到上一个文件,但跳转之前要保存当前文件,否则报错,所以最好用:wnext和:wprevious; :args显示整个文件列表和当前正在编辑的文件;:last和:first跳转到最后和最前一个文件。

    分割窗口

复制代码
 1 :split    "横着分割
 2 :new      "横着添加一个新窗口
 3 :vsplit   "竖着分割
 4 :vnew     "竖着添加新窗口
 5 CRTL+W w  "按顺序切换小窗口
 6 CRTL+W h
 7 CRTL+W j
 8 CRTL+W k
 9 CRTL+W l   "按方向切换
10 :qall      "关闭所有窗口
11 :wall      "保存所有窗口
12 vimdiff 1.c 2.c "创建一个垂直分割窗口比较这两个文件不同的地方
复制代码

      页签

      :tabedit filename 在正在编辑的vim窗口建一个叫filename 的页签

      :tab split 新建一个页签

       gt命令或鼠标点击切换页签

 

程序员的vim

 1)CTRL+Z挂起vim,fg命令回到vim挂起前状态

 2)zf创建折行,zo打开折行,zc关闭折叠

 3)tags,ctags *.c 为所有.c文件创建tags,ctags -R 将当前目录下包括子目录所有tags生成一个大的tags;:tag functionname转到fuctionname函数的定义处,也可以将光标放到函数名处,按下CRTL+]达到一样的效果;:ptag 获取函数参数列表;:stag 分屏显示

          注:可以下一个taglist(具体怎么设置google一下就知道了),显示tag的GUI,不过之前要安装Exuberant Ctagsvim的taglist不支持gnu的ctags

4)假设正在编辑一个.c文件,光标在#include<sys/unistd.h>的左尖括号后面,此时按下gf(Normal模式),vim就会找到unistd.h头文件定义的地方

原文地址:https://www.cnblogs.com/chris-cp/p/3732648.html